我在一个较大的项目中遇到了setuptools的问题,其中python包必须由几个debian包“构建”(每个包含一个“main”包的子包)。因此我们决定手动安装文件而不是使用“setup.py install”,但我们不确定要使用的位置。我们首先在/ usr / share中使用了一个目录,我们已经将其用于我们安装的其他内容。这种方法很好,除了我们在开始任何应用程序之前必须使用PYTHONPATH。
在默认的sys.path中是否有任何地方可以安装软件包?我在考虑/usr/lib/python2.6/dist-packages(这也是你使用setuptools时文件应该结束的地方,不管他们吗?),但是我不太喜欢写一个像这样的地方这与自定义安装脚本...另外,如果Ubuntu切换到2.7,我们必须移动吗?任何“最佳实践”如何做这样的事情?整个site-packages / dist-packages概念的记录不足:(
答案 0 :(得分: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环境变量。这没什么不对。