Как setuptools решает, какие файлы сохранить для sdist/bdist?

Я работаю над пакетом Python, который использует namespace_packages и find_packages(), например, в setup.py:

from setuptools import setup, find_packages
setup(name="package",
    version="1.3.3.7",
    package=find_packages(),
    namespace_packages=['package'], ...)

Он не находится в системе контроля версий, потому что это набор вышестоящих компонентов. МАНИФЕСТА нет.

Когда я запускаю python setup.py sdist, я получаю архив с большинством файлов в каталоге package/, но все каталоги, не содержащие файлы .py, не учитываются.

Каковы правила по умолчанию для того, что setup.py включает и исключает из встроенных дистрибутивов? Я исправил свою проблему, добавив MANIFEST.in с

recursive-include package *

но я хотел бы понять, что делают setuptools и distutils по умолчанию.


person joeforker    schedule 21.05.2009    source источник


Ответы (1)


Вам нужно добавить директиву package_data. Например, если вы хотите включить файлы с расширениями .txt или .rst:

from setuptools import setup, find_packages
setup(name="package",
    version="1.3.3.7",
    package=find_packages(),
    include_package_data=True,
    namespace_packages=['package'], 
     package_data = {
        # If any package contains *.txt or *.rst files, include them:
        '': ['*.txt', '*.rst']...

)
person Jason Baker    schedule 21.05.2009
comment
Хорошо, я сделал то, что ты грустишь. Но когда я устанавливаю его pip install git+git://repo, он не включает файлы. Предполагается, что вы находитесь на уровне занавеса макета каталога? - person Pol; 30.11.2012