首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为多个开发人员管理sys.path

为多个开发人员管理sys.path
EN

Stack Overflow用户
提问于 2017-08-30 15:37:30
回答 1查看 97关注 0票数 1

我面临的问题很小,但很烦人:

一位同事正在进行版本控制系统X(VCS)中的一个项目。另一位同事正在另一个版本控制系统Y中工作,并使用来自X的包。

不幸的是,VCS的同事使用本地导入,并在代码中使用sys.path.append('trunk/my_location')修改他的路径。

我的观点是,这是错误的做法,因为X中的同事Y强迫同事Y在能够运行代码之前编辑代码,仅仅是因为他们的repo名称不同。

如何管理这些依赖关系?

示例:

Developer X

代码语言:javascript
复制
>>> sys.path.append('my_repo/my_location')
>>> from my_location import toolbox
>>> nosetests -v
toolbox.test1 ... ok
toolbox.test2 ... ok
...

开发人员Y

步骤1:

代码语言:javascript
复制
>>> nosetests -v
toolbox.test1 ... fail
...

第2步:

代码语言:javascript
复制
>>> sys.path.append('my_repo/my_location')
>>> from my_location import toolbox
Import error: No such package.

第3步:

代码语言:javascript
复制
>>> sys.path.append('my_colleagues_repo/my_location')
>>> from my_location import toolbox
>>> nosetests -v
toolbox.test1 ... ok
toolbox.test2 ... ok

"...Sigh遵循;代码正在工作.“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-30 15:54:17

没有人应该做sys.path.append!这是一个您首先应该解决的工作流问题。

在这种情况下,将toolbox打包到发行版中是合适的。只想使用来自toolbox的代码(即通过导入语句或命令行脚本)的开发人员将执行:

代码语言:javascript
复制
pip install --user toolbox

希望处理toolbox代码的开发人员也应该使用pip。但是,该开发人员应该克隆回购,创建/激活虚拟环境,并执行:

代码语言:javascript
复制
 pip install --editable .

在这两种情况下,pip将以正确的方式为您整理必要的sys.path内容。

请按照PyPA Python打包用户指南了解如何创建发行版的详细信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45964562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档