我如何运行脚本文件作为python setup.py安装的一部分?

时间:2013-03-15 18:54:19

标签: python setuptools setup.py

问题

我知道如何使用setup.pysetuptools来注册脚本。如何在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(也容易出错,我需要找到这个软件包的安装位置等)

1 个答案:

答案 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软件(鸡蛋等)。如果您只在安装步骤中调用它,则不会为这些方法调用脚本。