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 ?
Нашел примерное решение. Не знаю на сколько это по феншую, но работает.
В 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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP