Issue 3031: distutils package_dir/package_data failure (original) (raw)
For python2.4: Python 2.4.4 (#2, Apr 15 2008, 23:43:20) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
The distutils documentation says to use an empty string in the setup() 'package_dir' param. for current dir. It works fine for python modules, but it fails when using 'package_data' param. For example:
.
|-- init.py
|-- module1.py
|-- module2.py
|-- setup.py
-- view |-- __init__.py |-- module3.glade |-- module3.py |-- module4.glade
-- module4.py
setup.py:
from distutils.core import setup setup(name='my_package', package_dir={'my_package': ''}, packages=['my_package', 'my_package.view'], package_data={'my_package': ['view/*.glade']} )
$ python setup.py build running build running build_py creating build creating build/lib creating build/lib/my_package copying module1.py -> build/lib/my_package copying module2.py -> build/lib/my_package copying init.py -> build/lib/my_package creating build/lib/my_package/view copying view/module3.py -> build/lib/my_package/view copying view/module4.py -> build/lib/my_package/view copying view/init.py -> build/lib/my_package/view creating build/lib/my_package/iew error: can't copy 'iew/module3.glade': doesn't exist or not a regular file
To correct this, '.' should be used instead of the empty string:
from distutils.core import setup setup(name='my_package', package_dir={'my_package': '.'}, packages=['my_package', 'my_package.view'], package_data={'my_package': ['view/*.glade']} )
Note that the empty string works fine on python2.5: Python 2.5.2 (r252:60911, Apr 17 2008, 13:15:05) [GCC 4.2.3 (Debian 4.2.3-3)] on linux2