[Distutils] Including DLLs in binary distributions

Jean-Paul Calderone exarkun at divmod.com
Tue Jul 21 17:09:50 CEST 2009


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
>>tried
>>    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
>interpreted.
>
>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.  For the moment, I have my setup.py copying
the files to a location where they'll be picked up, but it'd be great if
I could drop that.

Thanks,

Jean-Paul


More information about the Distutils-SIG mailing list