如何配置GitHub特定分支为项目依赖并支持测试运行?
解决特定Git分支作为项目依赖并支持测试环境的问题
我来帮你搞定这个头疼的问题——你需要把指定Git分支作为项目依赖,同时让测试环境也能正常加载它对吧?
首先得说清楚,你之前用的dependency_links其实已经被setuptools弃用了,而且setup.py test本身也不会自动处理这个字段里的依赖,这就是为什么测试时找不到jose包的原因。而直接写install_requires=['jose']会拉取默认的master分支,自然不符合你的需求。
正确的解决方案
现在pip支持直接在install_requires里指定包含分支信息的Git仓库URL,这样不管是安装项目还是运行测试,都会拉取你需要的python3分支。修改你的setup.py如下:
setup( packages=['utils', 'tokens'], install_requires=[ # 格式:包名 @ git+仓库地址@分支名#egg=包名-版本号 'jose @ git+https://github.com/Demonware/jose.git@python3#egg=jose-1.1.0' ], use_2to3=True, test_suite='test_jwt', zip_safe=True, )
为什么这个方案能解决问题?
- 这种语法是pip官方支持的直接依赖Git分支的方式,
@python3明确指定了要拉取的分支,#egg=jose-1.1.0是为了让setuptools能正确识别包的名称和版本,避免依赖解析时出现问题。 - 当你运行
pip install .或者python setup.py test时,pip会自动克隆指定分支的代码并安装,测试环境就能正常找到jose包了。
额外的优化建议
如果你的测试需要额外的依赖(比如测试框架),可以加上tests_require字段:
tests_require=[ 'pytest>=7.0', # 其他测试依赖都可以加在这里 ]
不过现在更推荐用pyproject.toml来管理所有依赖(包括测试依赖),这是Python项目的现代标准配置方式,示例如下:
[project] name = "your-project-name" dependencies = [ "jose @ git+https://github.com/Demonware/jose.git@python3#egg=jose-1.1.0" ] [project.optional-dependencies] test = [ "pytest>=7.0" ]
之后你可以运行pip install .[test]来安装包含测试依赖的版本,再用pytest命令运行测试,这样配置会更清晰规范。
内容的提问来源于stack exchange,提问作者bman
相关产品推荐
相关产品推荐

