Python 3.x 在单独安装的软件包中为setup.py提供自定义命令类
我正在尝试创建一个python包,该包为Python 3.x 在单独安装的软件包中为setup.py提供自定义命令类,python-3.x,setuptools,setup.py,Python 3.x,Setuptools,Setup.py,我正在尝试创建一个python包,该包为setuptools.setup()实现一个自定义命令类,以便在其他无关包的setup.py脚本中使用。理想情况下,我希望能够在setup()的setup\u requires参数中包含此包,并在执行其余的安装活动之前使自定义命令类生效。setup()是否提供某种钩子来支持此用例?如果没有,我如何在使用我的软件包时最大限度地减少setup.py脚本中必须出现的样板文件数量,同时确保我的软件包在安装过程中可用?这是针对我正在构建的自动化框架,因此必须尽量减少
setuptools.setup()
实现一个自定义命令类,以便在其他无关包的setup.py脚本中使用。理想情况下,我希望能够在setup()
的setup\u requires
参数中包含此包,并在执行其余的安装活动之前使自定义命令类生效。setup()
是否提供某种钩子来支持此用例?如果没有,我如何在使用我的软件包时最大限度地减少setup.py脚本中必须出现的样板文件数量,同时确保我的软件包在安装过程中可用?这是针对我正在构建的自动化框架,因此必须尽量减少对客户端包代码的影响以及对最终用户操作的任何依赖
下面是一些示例代码
在my_custom_setup_程序包中:
在setup.py for client_包中:
在为客户端\u软件包运行python setup.py install
时,即使在执行命令之前未安装my\u custom\u setup\u软件包,在my\u custom\u setup\u软件包中定义的自定义安装操作也应在安装后立即执行
任何帮助都将不胜感激,即使这将为我指明一个全新的方向。安装后是否立即提供帮助?没有指定需要在安装之前安装的内容,或者我是否将其与其他内容混淆?作为安装要求,我正在构建的包需要在安装之前由假定的其他脚本的setup()安装,以便可以自动执行安装后操作。仅供参考,我在示例代码中错误地编写了
install\u requires
,而我的意思是setup\u requires
。我已相应地编辑了问题。安装后是否立即编辑?没有指定需要在安装之前安装的内容,或者我是否将其与其他内容混淆?作为安装要求,我正在构建的包需要在安装之前由假定的其他脚本的setup()安装,以便可以自动执行安装后操作。仅供参考,我在示例代码中错误地编写了install\u requires
,而我的意思是setup\u requires
。我已据此对问题进行了编辑。
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
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'],
...
)