setuptools python setup.py install not copying all child modules

蹲街弑〆低调 提交于 2020-03-14 05:49:49

问题


The package dir structure is this

repodir/
-------- setup.py
-------- MANIFEST.in

-------- bin/
----------- awsm.sh

-------- sound/
------------ init.py

------------ echo/
----------------- init.py
----------------- module1.py
----------------- module2.py

------------ effects/
------------------- init.py
------------------- module3.py
------------------- module4.py

setup.py

from setuptools import setup
setup(
        name = 'sound',
        version = '0.1',
        author = 'awesomeo',
        author_email = 'awesomeo@email.com',
        description = 'awesomeo',
        license = 'Proprietary',
        packages = ['sound'],
        scripts = ['bin/awsm.sh'],
        install_requires = ['Django==1.8.2', 'billiard', 'kombu', 'celery', 'django-celery' ],
        zip_safe = False,
    )

When I do - python setup.py install, only sound/init.py is copied to /Library/Python/2.7/site-packages/sound/ directory.

The rest of the subpackages echo, surround and effects are not copied at all. Setuptools creates an sound.egg-info which contain SOURCES.txt file

SOURCES.txt

MANIFEST.in
setup.py
bin/awsm.sh
sound/__init__.py
sound.egg-info/PKG-INFO
sound.egg-info/SOURCES.txt
sound.egg-info/dependency_links.txt
sound.egg-info/not-zip-safe
sound.egg-info/requires.txt
sound.egg-info/top_level.txt

Looks like setup does not include the subpackages in the SOURCES.txt file to be copied on install and that is what is creating the problem.

Any idea why this might happen?


回答1:


Add sound.echo and sound.effects to packages. distutils won't recursively collect sub-packages.

As per the fine documentation:

Distutils will not recursively scan your source tree looking for any directory with an __init__.py file

Note: Also be sure to create __init__.py files for your packages (In your question you named them init.py).




回答2:


You're already using setuptools so you can import find_packages to get all sub packages:

from setuptools import setup, find_packages
setup(
    ...
    packages=find_packages(),
    ...
)


来源:https://stackoverflow.com/questions/30474804/setuptools-python-setup-py-install-not-copying-all-child-modules

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!