1

setup.py除了对函数的调用之外,它还可以包含任何类型的 Python 代码setup(),我使用以下代码段对其进行了测试:

from setuptools import setup

setup(name='MyPackage',
      packages=['mypackage'])

print "After setup()"

print语句已正常执行。我对此进行了测试,因为命令 ( python setup.py install) 让我怀疑。我是否应该无所畏惧地将setup.py其视为处理我所有安装需求的任意脚本?

背景是这样的:我正在编写一个作为独立程序工作的 Python 包,它不打算被导入。在distutils我发现几乎所有我需要处理安装细节的东西,比如将脚本复制到系统路径、复制额外的数据文件、创建目录等。但仍有一些程序超出了distutils范围,例如系统调用。

我应该把我需要的额外代码放进去setup.py吗?

4

3 回答 3

1

这篇最近的博文应该可以回答您的大部分问题:

http://tarekziade.wordpress.com/2011/08/19/5-tips-for-packaging-your-python-projects/

关于 Python 世界中的打包的大量工作正在进行中,但尚未可用。

于 2011-08-25T22:21:47.543 回答
0

您可能想看看http://paver.github.com/paver/,它使扩展 distutils 与一些特定于项目的任务变得轻而易举。

于 2011-08-26T01:14:09.607 回答
0

如果在 setup() 执行过程中发生错误,程序将停止并且不再执行任何代码。但您可能仍希望执行一些额外的代码。在这种情况下,请使用:

from setuptools import setup

try:
    setup(name='MyPackage',
          packages=['mypackage'])

finally:
    print "After setup()"
于 2014-09-17T20:17:24.300 回答