@PesyCorm

Почему из пакета python устанавливается только __init__.py?

Я сделал пакет python, но почему-то когда я пытаюсь установить его с помощью pip3 install git+<...>, то в установленном пакете оказывается только __init__.py
Может, это связано с тем, что внутри самого пакета все модули вложены в папки? Если да, то как сделать, чтобы сохранить вложенность для установки?
структура выглядит так
+-- package_name
|       |
|       +-- __init__.py
|       |
|       +--dir1
|       |
|       +--dir2
|       
+-- setup.py

Подскажите, как это сделать правильно?
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
Сейчас dir1 и dir2 — это обычные папки. По умолчанию в пакеты не включаются обычные папки, не являющиеся пакетами. Если вы хотите сделать их пакетами, создайте файлы "__init__.py" внутри каждой из них .
Если же они должны быть включены в модуль именно в виде папок со всем содержимым, а не пакетов, то вам нужно создать файл "MANIFEST.in" в корне вашего проекта (то есть на одном уровне с setup.py) и поместить в него следующие директивы:
recursive-include package_name/dir1 *
recursive-include package_name/dir2 *

Затем в setup.py в функцию setup нужно передать параметр include_package_data=True:
from setuptools import setup, find_packages
...
setup(
    ...
    include_package_data=True
)

В таком случае при сборке пакета папки dir1 и dir2 будут включены в него со всем содержимым рекурсивно.

Более подробно о включении файлов данных в пакет:
https://docs.python.org/3/distutils/sourcedist.html
https://setuptools.pypa.io/en/latest/userguide/dat...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы