开发库模块时设置Python路径

开发库模块时设置Python路径,python,Python,我正在开发一个库和一个在Python2.6中使用该库的应用程序。我在“站点包”中放置了一个“mylib.pth”文件,这样我就可以从我的应用程序中导入mylib 我使用的是DVCS,所以当我想修复bug或向库中添加功能时,我会创建存储库的一个分支,并在该分支中工作。为了使用我对库所做的更改来测试我的应用程序,我在“mylib.pth”中编辑路径以指向新的开发分支 如果我的库中有几个并行分支同时运行,这会变得有点乏味。在测试之前,我必须不断编辑“mylib.pth”文件,以确保根据库的正确版本进行

我正在开发一个库和一个在Python2.6中使用该库的应用程序。我在“站点包”中放置了一个“mylib.pth”文件,这样我就可以
从我的应用程序中导入mylib

我使用的是DVCS,所以当我想修复bug或向库中添加功能时,我会创建存储库的一个分支,并在该分支中工作。为了使用我对库所做的更改来测试我的应用程序,我在“mylib.pth”中编辑路径以指向新的开发分支

如果我的库中有几个并行分支同时运行,这会变得有点乏味。在测试之前,我必须不断编辑“mylib.pth”文件,以确保根据库的正确版本进行测试。当我调用我的应用程序时,有没有一种方法可以使用当前路径(即我当前所在的库的开发分支)来设置库路径,而不是使用全局“站点包”目录中的“mylib.pth”?根据描述:

假设您有一个应用程序 需要LibFoo的版本1,但需要另一个版本 应用程序需要版本2。怎么 您能同时使用这两种应用程序吗? 如果你把所有东西都安装到 /usr/lib/python2.4/site-packages(或 不管你的平台标准是什么 位置是),很容易在一个 你无意中 升级不应该升级的应用程序 要升级


建议阅读:。它解决了Python应用程序开发和部署中的许多问题。

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

当然,您可以更改
sys.path
以添加当前目录(或其子目录)到搜索路径
site.addsitedir
是一个很好的方法。由于您将从Python执行此操作,因此您可以使用任何类型的逻辑来决定添加哪个目录;您可以基于
os.path.normpath
​如果当前目录看起来像一个分支,请单击它,或者在光盘上查找最新的分支,或者其他内容


你可以把这个代码放在<代码> StestCuuStudio.Py < /Cult>模块或其他启动触发的位置。

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

我将我的
PYTHONPATH
设置为指向最新和最好的版本。禁止编辑

export PYTHONPATH=.:/the/new/version

这似乎很好地解决了我的问题。我在我的库的开发分支中运行了“virtualenv”,它创建了“Lib”和“Scripts”子目录。我在“./Lib/site packages”目录中添加了一个修改过的“.pth”文件。然后,要使用我的库的开发版本调用我的应用程序,我运行“/Scripts/python myApp.py”我目前没有使用setuptools,但这看起来也是一个非常简单的解决方案。我将研究如何使用setuptools。