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

使用pip/pipenv安装TestPyPI自有包时遭遇依赖冲突错误

问题:自有Python包安装时出现跨版本依赖冲突,错误提示依赖包随机变化

我用setup.py创建了个人Python包,上传到TestPyPI做测试,目前有1.0.0、1.0.1、1.1.0三个版本。在新目录/项目中安装该包时,弹出如下依赖冲突错误:

ERROR: Cannot install my_package1.0.0, my_package1.0.1 and my_package==1.1.0 because these package versions have conflicting dependencies.

The conflict is caused by:
my_package 1.1.0 depends on pysqlite3
my_package 1.0.1 depends on flake8
my_package 1.0.0 depends on flake8

To fix this you could try to:

  1. loosen the range of package versions you've specified
  2. remove package versions to allow pip attempt to solve the dependency conflict

但每次执行安装命令,错误提示里的依赖包名称都会变化!

我的setup.py部分代码如下:

python_requires=">=3.8, <4",
packages=find_packages(
    include=["sqlalchemy_module"]
),
install_requires=[
    "requests",
    "pysqlite3",
    "SQLAlchemy",
    "logging",
    "argparse",
    "configparser", ],
setup_requires=['setuptools'],
# pip install -e flake8 ... ...
extras_require={
    "dev": ['flake8', 'black', 'isort', 'tox', 'mccabe', 'pre-commit', 'bumpver']
},
tests_require=["pytest", "pytest-cov"],
package_data={},
package_dir={"": "."},

解决方法

1. 先解决当前安装问题:指定具体版本安装

错误提示同时出现三个版本,说明你执行的是pip install my_package这类未指定版本的命令,pip会尝试拉取所有可用版本解析依赖,但不同版本依赖不一致(1.1.0依赖pysqlite3,1.0.x依赖flake8),必然冲突。错误提示依赖包随机变,是因为pip每次尝试的版本组合顺序不同。

直接指定版本安装即可:

# 安装1.1.0版本
pip install my_package==1.1.0
# 或者安装1.0.x版本
pip install my_package==1.0.1

2. 从根源修复包的依赖问题

看你的setup.py代码,存在几个关键问题:

  • 1.0.0/1.0.1版本误将开发依赖放入正式依赖:错误提示里1.0.x依赖flake8,但当前代码中flake8是在extras_require["dev"]下的,说明你上传1.0.x版本时,误把flake8写到了install_requires里,导致用户安装正式包时需要开发依赖。
  • install_requires包含Python标准库:logging、argparse、configparser都是Python自带的标准库,不需要放到install_requires中,会增加不必要的依赖解析负担。
  • 第三方依赖未做版本范围限制:如果你的包对requests、SQLAlchemy这类第三方库没有严格版本要求,建议添加合理的版本范围,比如requests>=2.25.0,<3,避免后续出现依赖冲突。

3. 后续版本上传注意事项

  • 上传新版本前,仔细检查install_requires,确保只包含真正需要的第三方依赖,标准库不要加入。
  • 开发依赖严格放在extras_require["dev"]中,安装开发环境时用pip install my_package[dev]。
  • 记录每个版本的依赖变更原因,避免无意义的依赖差异导致跨版本冲突。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:25:38