TransWikia.com

Python3. Setuptools. Добавление локального пакета в сборку

Stack Overflow на русском Asked by photon on January 6, 2022

Есть локально собранный пакет (например main-0.1.tar.gz).
Есть другой пакет (например base-0.1), который требует в зависимости main-0.1

Нужно, что бы при последующей установки пакета base-0.1, пакет main-0.1 так-же был установлен.

Т.е. указать в install_requires можно только пакеты с PyPI, а вот добавить пакеты в сборку – не ясно как.

Можно добавить в архив base-0.1 пакет main-0.1.tag.gz с помощью MANIFEST.in (include main-0.1.tag.gz). Но дальше dependency_links, например, не работает корректно.

Как добавить локальный пакет в сборку другого пакета и последующую его установку вместе с другим пакетом, как если бы он подтягивался с PyPI ?

One Answer

Нашел примерное решение. Не знаю на сколько это по феншую, но работает.

В MANIFEST.in добавляем include main-0.1.tar.gz

В setup.py в конце файла(после вызова setup()) дописываем:

if 'sdist' not in sys.argv[1]:
    os.system('pip install main-0.1.tar.gz')

Условие может быть другим, если, например, для сборки не используется sdist (python setup.py sdist). Главное как-то определить, что это запуск setup на сборку, а не на установку (pip install base-0.1.tar.gz в будущем).

В таком варианте мы копируем локальный зависимый пакет в архив собираемого пакета, и распространяется он, соответственно, вместе с ним. И устанавливается так-же.

Answered by photon on January 6, 2022

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP