[Distutils] problem with sdist for nested packages

Doug Hellmann doug.hellmann at gmail.com
Wed Sep 8 13:36:19 CEST 2010


Forgot to include version info:

Python 2.7
distribute 0.6.10
Paver 1.0.3

Doug

On Sep 8, 2010, at 7:34 AM, Doug Hellmann wrote:

> I'm having some problems creating an sdist for a nested package where some of the levels only include __init__.py and the subdirectories.  The full list of files is fairly long, but here's a snippet to give you an idea of the layout for the inputs:
> 
> PyMOTW/xml
> PyMOTW/xml/__init__.py
> PyMOTW/xml/etree
> PyMOTW/xml/etree/__init__.py
> PyMOTW/xml/etree/ElementTree
> PyMOTW/xml/etree/ElementTree/__init__.py
> PyMOTW/xml/etree/ElementTree/ElementTree_create.py
> PyMOTW/xml/etree/ElementTree/...
> 
> When I build the sdist, I get:
> 
> build/lib/PyMOTW/xml
> build/lib/PyMOTW/xml/etree
> build/lib/PyMOTW/xml/etree/ElementTree
> build/lib/PyMOTW/xml/etree/ElementTree/__init__.py
> build/lib/PyMOTW/xml/etree/ElementTree/ElementTree_create.py
> build/lib/PyMOTW/xml/etree/ElementTree/...
> 
> The __init__.py at the "xml" and "xml/etree" levels are not included.  As a result, the sdist won't install because it wants to populate a PyMOTW.ElementTree package but the directory doesn't exist.  I also tried adding other .py files at those levels in the directory structure (in case an "empty" directory was being ignored), but that had no effect.
> 
> The traceback I get trying to install the sdist is:
> 
> Traceback (most recent call last):
>  File "setup.py", line 7, in <module>
>    paver.tasks.main()
>  File "paver-minilib.zip/paver/tasks.py", line 621, in main
>  File "paver-minilib.zip/paver/tasks.py", line 604, in _launch_pavement
>  File "paver-minilib.zip/paver/tasks.py", line 569, in _process_commands
>  File "paver-minilib.zip/paver/setuputils.py", line 146, in __call__
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
>    cmd_obj.run()
>  File "/Users/dhellmann/.virtualenvs/pymotwtest/lib/python2.7/site-packages/distribute-0.6.10-py2.7.egg/setuptools/command/install.py", line 71, in run
>    _install.run(self)
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/install.py", line 563, in run
>    self.run_command('build')
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
>    self.distribution.run_command(command)
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
>    cmd_obj.run()
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build.py", line 127, in run
>    self.run_command(cmd_name)
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
>    self.distribution.run_command(command)
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
>    cmd_obj.run()
>  File "/Users/dhellmann/.virtualenvs/pymotwtest/lib/python2.7/site-packages/distribute-0.6.10-py2.7.egg/setuptools/command/build_py.py", line 77, in run
>    self.build_packages()
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build_py.py", line 366, in build_packages
>    modules = self.find_package_modules(package, package_dir)
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build_py.py", line 218, in find_package_modules
>    self.check_package(package, package_dir)
>  File "/Users/dhellmann/.virtualenvs/pymotwtest/lib/python2.7/site-packages/distribute-0.6.10-py2.7.egg/setuptools/command/build_py.py", line 192, in check_package
>    init_py = _build_py.check_package(self, package, package_dir)
>  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build_py.py", line 191, in check_package
>    "package directory '%s' does not exist" % package_dir)
> distutils.errors.DistutilsFileError: package directory 'PyMOTW/ElementTree' does not exist
> 
> Has anyone seen this problem before?
> 
> Thanks,
> Doug
> 



More information about the Distutils-SIG mailing list