[Distutils] Distutils ignoring INSTALL_SCHEMES (or: How to put data files in PURELIB)

Alexandre Gauthier alex at underwares.org
Tue Oct 2 18:01:19 CEST 2007


Hello there. I'm currently trying to package python bindings for a 
library. The bindings are currently compiled in an obscure way, so I end 
up with the following

libmylib\__init__.py
libmylib\mylib.pyd
libmylib\dep.dll
mylib.py

Where mylib.py is the SWIG interface for mylib.pyd.

Since I cannot have distutils compile the bindings at all, I'd like to 
just install the pyd and dll as "data files" along with the .py in 
"site-packages". That can be accomplished with the following:

for scheme in INSTALL_SCHEMES.values():
    scheme['data'] = scheme['purelib']

However, bdist_wininst will actually ignore this, at least in python 
2.5.1. I'll end up with the pyd and dll in the DATA dir, instead of in 
the PURELIB one.

I'm really at loss on how to proceed. I read about forcing /PURELIB/ in 
front of file paths with the following:

if sys.argv[1] == 'bdist_wininst':
     for fileInfo in COMPILED_LIBS:
         fileInfo[0] = '/PURELIB/%s' % fileInfo[0]

However, that doesn't work, and complains the path for each file forced 
into PURELIB this way can't be absolute.

I also tried installing the file into an absolute path constructed from 
sys.path variables, which actually worked if I ran "setup.py install", 
but creating a bdist_wininst with that setup file actually just ignored 
the files to copy.

I'm really at loss on how to proceed. The setup file doesn't need to be 
cross platform. It just needs to be able to build a friendly windows 
installer -- that's all...

If anyone could help, i'd be immensely grateful. Thank you.
--
Alexandre Gauthier



More information about the Distutils-SIG mailing list