问题
我知道如何使用setup.py
和setuptools来注册脚本。如何在make
中运行另一个脚本文件(比如python setup.py install
文件)。
背景
我想我会使用类似的东西:
os.system('make maketarget') #from somewhere in the package
但setuptools.setup
收到一个字典,所以我不能只在setup()
/中添加这一行,我需要在setup.py install
安装基本软件包之后运行该脚本。
我知道我可以向setup.py
添加命令,但我希望在安装步骤中调用此脚本。
我也可以默认只放置一个:
if sys.argv[-1] == 'install':
os.system('do something in the shell')
并且只是在setup()之后放置这个块,但不知怎的,这看起来不是非常pytonic(也容易出错,我需要找到这个软件包的安装位置等)
答案 0 :(得分:6)
您可以从setuptools继承现有的install命令,并使用所需的功能对其进行扩展。然后,您可以在setup函数中将其注册为install命令:
from setuptools.command.install import install
class MyInstall(install):
def run(self):
install.run(self)
print("\n\n\n\nI did it!!!!\n\n\n\n")
# in the setup function:
cmdclass={'install': MyInstall}
而不是print语句只需调用你的脚本。
请注意,有很多方法可以打包python软件(鸡蛋等)。如果您只在安装步骤中调用它,则不会为这些方法调用脚本。