4

我在一个较大的项目中遇到了 setuptools 的问题,其中一个 python 包必须从几个 debian 包(每个包都包含一个“主”包的子包)“构建”。因此,我们决定手动安装文件而不是使用“setup.py install”,但我们不确定要使用的位置。我们首先使用了 /usr/share 中的一个目录,该目录已经用于我们安装的其他内容。这很好用,除了我们必须在启动任何应用程序之前弄乱 PYTHONPATH 之外。

在默认的 sys.path 中是否有我们可以安装软件包的地方?我在考虑 /usr/lib/python2.6/dist-packages (当你使用 setuptools 时文件应该结束的地方,不应该吗?),但我有点不愿意写信到这样的地方这与自定义安装脚本......另外,如果 Ubuntu 切换到 2.7,我们是否也必须移动?任何“最佳实践”如何做这样的事情?整个站点包/dist-packages 概念的文档记录不足:(

4

1 回答 1

2

考虑到事实上,你可以在任何你想要的地方安装它,很难说你需要在哪里安装你的 Python 包。我认为最好的地方是将它们放入 /usr/local/share/YOURPACKAGENAME 以防它不是由 apt-get (aptitude 等)安装的。在任何一种情况下,您都必须在您的 python 脚本周围创建一个小包装器,它将您的包所在的路径插入到“sys.path”变量中。例如,Ubuntu 的“yum”默认将其文件放入“/usr/share/yum-cli”,“/usr/bin/yum”脚本包含以下行:

#!/usr/bin/python

...

sys.path.insert(0, '/usr/share/yum-cli')
try:
    import yummain
    yummain.user_main(sys.argv[1:], exit_code=True)
except KeyboardInterrupt, e:
    ...

或者,您必须设置 PYTHONPATH 环境变量。没有什么不妥。

于 2010-08-06T21:28:45.127 回答