You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:37:57