[Distutils] Including DLLs in binary distributions

P.J. Eby pje at telecommunity.com
Tue Jul 21 20:12:48 CEST 2009

At 11:09 AM 7/21/2009 -0400, Jean-Paul Calderone wrote:
>On Tue, 21 Jul 2009 09:47:46 -0400, Jean-Paul Calderone 
><exarkun at divmod.com> wrote:
>>On Tue, 21 Jul 2009 09:02:16 -0400, Jean-Paul Calderone 
>><exarkun at divmod.com> wrote:
>>>On Mon, 20 Jul 2009 20:22:41 -0400, "P.J. Eby" 
>>><pje at telecommunity.com> [snip]
>>>>Use package_data instead; it should do the right thing with both 
>>>>distutils and setuptools.  (It is available in the distutils as 
>>>>of Python 2.4; for 2.3 you'd have to use setuptools.)
>>>Can package_data include files which aren't in the source tree?  I naively
>>>    package_data = {
>>>        'OpenSSL': ['C:/OpenSSL/ssleay32.dll',
>>>                    'C:/OpenSSL/libeay32.dll']}
>>Hmm.  Actually, I then tried various other spellings, using only relative
>>paths, and was unable to get these DLLs into the egg using any of them.  I
>>wonder if I am missing something fundamental about how package_data is
>>A couple other values I tried:
>>  package_data = {'': ['ssleay32.dll', 'libeay32.dll']}
>>  package_data = {'OpenSSL': ['ssleay32.dll', 'libeay32.dll']}
>>Any tips?
>I tracked down the problem to a requirement I wasn't aware of.  If no
>value is passed for the "packages" argument to setup, it seems that the
>package_data value is ignored.  Once I added `packages = ["OpenSSL"]´,
>the former of the above package_data definitions worked.
>I'm still curious about whether it's possible to specify absolute paths
>rather than relative paths.

No, it's not supported by the distutils or by setuptools.  The 
concept of "package data" is data in the same directory as the 
package's Python code.  Using it to install libraries is a bit of a 
hack in the first place.

More information about the Distutils-SIG mailing list