代码之家  ›  专栏  ›  技术社区  ›  Trent

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

  •  3
  • Trent  · 技术社区  · 15 年前

    我正在开发一个库和一个使用Python2.6中的库的应用程序。我在“站点包”中放置了一个“mylib.pth”文件,以便 import mylib 从我的申请中。

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

    如果我的图书馆有几个平行的分支同时进行,这会有点乏味。在测试之前,我必须不断地编辑“mylib.pth”文件,以确保根据库的正确版本进行测试。当我调用应用程序而不是使用全局“site packages”目录中的“mylib.pth”时,是否有方法使用当前路径(即我当前所在的库的开发分支)来设置库路径?

    6 回复  |  直到 15 年前
        1
  •  5
  •   Alok Singhal    15 年前

    virtualenv 你在找什么?从描述中:

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

        2
  •  4
  •   Peter Rowell    15 年前

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

        3
  •  2
  •   Ned Batchelder    15 年前

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

        4
  •  1
  •   bobince    15 年前

    当然,你可以改一下 sys.path 将当前目录(或其子目录)添加到搜索路径。 site.addsitedir 是一个很好的方法。既然您要从python完成这项工作,那么您可以有任何逻辑来决定要添加哪个目录;您可以基于这个逻辑进行添加。 os.path.normpath 如果当前目录看起来像一个分支,或者查找磁盘上最新的分支,或者其他什么。

    你可以把这个代码放到 sitecustomize.py 模块或其他启动触发位置。

        5
  •  1
  •   Jason Baker    15 年前

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

        6
  •  1
  •   S.Lott    15 年前

    我把我的 PYTHONPATH 指向最新和最好的版本。没有编辑。

    export PYTHONPATH=.:/the/new/version