我面临的问题很小,但很烦人:
一位同事正在进行版本控制系统X(VCS)中的一个项目。另一位同事正在另一个版本控制系统Y中工作,并使用来自X的包。
不幸的是,VCS的同事使用本地导入,并在代码中使用sys.path.append('trunk/my_location')修改他的路径。
我的观点是,这是错误的做法,因为X中的同事Y强迫同事Y在能够运行代码之前编辑代码,仅仅是因为他们的repo名称不同。
如何管理这些依赖关系?
示例:
Developer X
>>> sys.path.append('my_repo/my_location')
>>> from my_location import toolbox
>>> nosetests -v
toolbox.test1 ... ok
toolbox.test2 ... ok
...开发人员Y
步骤1:
>>> nosetests -v
toolbox.test1 ... fail
...第2步:
>>> sys.path.append('my_repo/my_location')
>>> from my_location import toolbox
Import error: No such package.第3步:
>>> sys.path.append('my_colleagues_repo/my_location')
>>> from my_location import toolbox
>>> nosetests -v
toolbox.test1 ... ok
toolbox.test2 ... ok"...Sigh遵循;代码正在工作.“
发布于 2017-08-30 15:54:17
没有人应该做sys.path.append!这是一个您首先应该解决的工作流问题。
在这种情况下,将toolbox打包到发行版中是合适的。只想使用来自toolbox的代码(即通过导入语句或命令行脚本)的开发人员将执行:
pip install --user toolbox希望处理toolbox代码的开发人员也应该使用pip。但是,该开发人员应该克隆回购,创建/激活虚拟环境,并执行:
pip install --editable .在这两种情况下,pip将以正确的方式为您整理必要的sys.path内容。
请按照PyPA Python打包用户指南了解如何创建发行版的详细信息。
https://stackoverflow.com/questions/45964562
复制相似问题