我面临的问题虽小但很烦人:
一位同事正在开发版本控制系统 X (VCS-X) 中的一个项目。
另一位同事正在另一个版本控制系统 Y 中工作,并使用来自 X 的软件包。
不幸的是,VCS-X 中的同事使用本地导入并使用修改他的路径sys.path.append('trunk/my_location')
在他们的代码中。
我的观点是,这是错误的做法,因为 X 中的同事强迫 Y 同事在能够运行代码之前编辑代码,仅仅是因为他们的存储库命名不同。
应该如何管理这些依赖关系?
Example:
开发者X:
>>> sys.path.append('my_repo/my_location')
>>> from my_location import toolbox
>>> nosetests -v
toolbox.test1 ... ok
toolbox.test2 ... ok
...
开发商Y:
Step 1:
>>> nosetests -v
toolbox.test1 ... fail
...
Step 2:
>>> sys.path.append('my_repo/my_location')
>>> from my_location import toolbox
Import error: No such package.
Step 3:
>>> sys.path.append('my_colleagues_repo/my_location')
>>> from my_location import toolbox
>>> nosetests -v
toolbox.test1 ... ok
toolbox.test2 ... ok
“……叹了口气;代码正在运行……”
Nobody应该做sys.path.append
!这是您应该首先解决的工作流程问题。
在这种情况下,将适当的包装toolbox
进入一个分布。开发商只想use代码来自toolbox
,即通过导入语句或命令行脚本,将执行:
pip install --user toolbox
想要工作的开发者on the toolbox
代码也应该使用 pip install。但是,该开发人员应该克隆存储库,创建/激活虚拟环境,然后执行:
pip install --editable .
在这两种情况下,pip 都会整理出必要的内容sys.path
以正确的方式为您提供东西。
跟着PyPA Python 打包用户指南有关如何创建发行版的详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)