У меня есть setup.py:

from setuptools import setup

setup(
      ...
      packages=['mypackage'],
      test_suite='mypackage.tests',
      ...
    )

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

Что я делаю не так?

Использование python 2.7

29
user1561108 28 Янв 2013 в 04:09

3 ответа

Лучший ответ

Используйте find_packages() функцию:

from setuptools import setup, find_packages

setup(
    # ...
    packages=find_packages(),
)

Функция будет искать пакеты python (каталоги с файлом __init__.py) и возвращать их как правильно отформатированный список. Он будет запускаться в том же каталоге, что и скрипт setup.py, но вместо него может быть задан явный начальный каталог, а также шаблоны исключений, если вам это нужно, чтобы пропустить некоторые вещи.

29
ryanjdillon 25 Сен 2017 в 08:05

Просто включите все ваши подмодули в список пакетов:

from setuptools import setup

setup(
      ...
      packages=['mypackage', 'mypackage.tests', 'mypackage.submodules'],
      ...
     )
3
Shengwei Hou 7 Окт 2018 в 23:08

Для людей, использующих чистые distutils вместо setuptools: вы должны передать список всех пакетов и подпакетов (но не всех подмодулей, они обнаружены) в параметре packages.

3
Éric Araujo 29 Янв 2013 в 15:11