13

问题

我知道如何使用setup.pysetuptools注册脚本。我将如何运行另一个脚本文件(比如说一个make文件)作为python setup.py install.

背景

我想我会使用类似的东西:

os.system('make maketarget') #from somewhere in the package

但是setuptools.setup收到一个 dict 所以我不能只在setup()/ 中添加这一行,而且我需要在基本包安装后运行脚本setup.py install

我知道我可以添加一个命令,setup.py但我希望在安装步骤中调用这个脚本。

我也可以默认只放置一个:

if sys.argv[-1] == 'install':
    os.system('do something in the shell')

并将这个块放在 setup() 之后,但不知何故这看起来不是很 pytonic (而且也容易出错,我需要找到这个包的确切安装位置等)

4

1 回答 1

7

您可以从 setuptools 继承现有的安装命令,并使用所需的功能对其进行扩展。之后,您可以将其注册为安装功能中的安装命令:

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}

而不是打印语句,只需调用您的脚本。

请注意,打包python软件(鸡蛋等)的方式有很多种。如果您仅在安装步骤中调用脚本,则不会以这些方式调用您的脚本。

于 2013-05-17T12:28:00.707 回答