2014-11-20 3 views
4

Использование Python 3.4 и Setuptools, я пытаюсь получить пакеты пространства имен для правильной работы, как это определено в PEP 420. Моя структура каталогов выглядит следующим образом:питона пакеты неявное пространства имен не устанавливается с Setuptools

  • проект
    • __init__.py
    • ядро ​​
      • несколько .py файлов
    • лесозаготовительного
      • com1
        • несколько файлов .py
      • COM2
        • несколько .py файлов
    • интерфейс
      • разных файлы

При использовании Setuptools find_package(), он находит пакет «проект», но он не устанавливает ни одну из папок (неявные подпакеты) внутри «проекта». Когда я разархивирую файл .egg, все, что я вижу, это файл __init__.py внутри, ни один из подкаталогов или файлов.

Я мог бы просто поместить __init__.py в каждую директорию, но поскольку эти файлы были бы пустыми, и мне не нравится, как она работает, я пытаюсь это избежать.

Если я двигаюсь только за пределами моего «проекта» каталог и запустите следующее, он работает

python -m project.logging.com1.myfile

но нигде не работает, потому что Setuptools не устанавливать подкаталоги (неявные пространства имен), в которых нет __init__.py.

Как заставить setuptools правильно установить мои неявные пакеты пространства имен? Должен ли я просто сказать, чтобы установить все файлы внутри каталога, и это будет достаточно хорошо?

ответ

3

Похоже, что первоначальный запрос на растяжение, который добавил поддержку PEP 420 для setuptools, был rejected. Существует открытая дискуссия о том, как наилучшим образом объединиться в поддержке PEP 420 на another issue, но на данный момент не видно, что неявные пространства имен поддерживаются.

0

Неявные пакеты пространства имен не поддерживаются find_packages. Тем не менее, все, что find_packages делает, является возвратом списка dotted.package.name s. Вы все же можете явно указать свои пакеты.

Смежные вопросы