Я пытаюсь создать пакет Python, который реализует пользовательский класс команд для setuptools.setup()
для использования в сценариях setup.py других, несвязанных пакетов. В идеале я хотел бы иметь возможность включить этот пакет в аргумент setup_requires
для setup()
и заставить пользовательский класс команд вступить в силу до того, как будут выполнены остальные действия по настройке. Предоставляет ли setup()
какой-то хук для поддержки этого варианта использования? Если нет, то как я могу свести к минимуму количество шаблонов, которые должны появляться в сценарии setup.py при использовании моего пакета, при этом гарантируя, что мой пакет будет доступен во время установки? Это для среды автоматизации, которую я создаю, поэтому необходимо свести к минимуму влияние на код клиентских пакетов и любую зависимость от действий конечного пользователя.
Вот пример кода...
В my_custom_setup_package:
from setuptools.command.install import install as _install
class install(_install):
def run(self):
result = super().run()
# If the installed package has the required hooks:
# Perform some custom post-installation actions
В setup.py для client_package:
from setuptools import setup
# No cmdclass argument is given, because I can't count on
# my_custom_setup_package to be installed yet.
setup(
...
setup_requires=['my_custom_setup_package'],
...
)
При запуске python setup.py install
для client_package действия выборочной установки, определенные в my_custom_setup_package, должны выполняться сразу после установки, даже если my_custom_setup_package не был установлен до команды был казнен.
Любая помощь приветствуется, даже если она укажет мне совершенно новое направление.
install_requires
в своем примере кода, когда имел в видуsetup_requires
. Я отредактировал вопрос соответственно. - person hosford42   schedule 31.05.2016