在开发库模块时设置Python路径

时间:2009-12-11 18:25:10

标签: python

我正在开发一个库和一个在Python 2.6中使用该库的应用程序。我在“site-packages”中放置了一个“mylib.pth”文件,以便我可以在我的应用程序中import mylib

我正在使用DVCS,因此当我想修复错误或向库添加功能时,我会创建存储库的分支并在该分支内工作。要使用我对库进行的更改来测试我的应用程序,我在“mylib.pth”中编辑路径以指向新的开发分支。

如果我的库中有一些并行分支,那么这会变得有点乏味。我必须在测试之前继续编辑“mylib.pth”文件,以确保我正在测试我的库的正确版本。有没有办法使用当前路径(即我当前的库的开发分支)来设置我调用应用程序时的库路径,而不是使用全局“site-packages”中的“mylib.pth” ?目录

6 个答案:

答案 0 :(得分:5)

virtualenv您要找的是什么?从描述:

  

想象一下,你有一个应用程序   需要LibFoo的第1版,但另一个   应用程序需要版本2.如何   你能同时使用这两个应用吗?   如果您安装所有内容   /usr/lib/python2.4/site-packages(或   无论您的平台标准如何   位置是),它很容易结束   你无意中的情况   升级不应该的应用程序   升级。

答案 1 :(得分:4)

建议阅读:Tools of the Modern Python Hacker: Virtualenv, Fabric and Pip。它解决了Python应用程序开发和部署的许多问题。

答案 2 :(得分:2)

如果您使用setuptools,那么您可以在工作树中说setup.py develop,它将为您执行.pth文件操作。

答案 3 :(得分:1)

当然,您可以更改sys.path以将当前目录(或其子目录)添加到搜索路径。 site.addsitedir是一种很好的方法。既然你是从Python那里做的,你可以使用任何类型的逻辑来决定添加哪个目录;如果它看起来像一个分支,或者在光盘上寻找最新的分支,或者其他东西,你可以将它基于os.path.normpath当前目录。

您可以将此代码放在sitecustomize.py模块或其他启动触发的位置。

答案 4 :(得分:1)

您也可以考虑使用zc.buildout。它允许您使用自定义的python路径创建入口点。

答案 5 :(得分:1)

我将PYTHONPATH设置为指向最新版本。没有编辑。

export PYTHONPATH=.:/the/new/version