Windows下Python虚拟环境安装依赖报无匹配版本错误求助
问题根因
报错由两个独立问题叠加导致:
1. 虚拟环境完全未生效
从where python、where pip的输出可以确认,你执行激活操作后,系统路径优先级没有正确调整,始终在调用全局Python和pip,没有真正进入虚拟环境上下文。这也是为什么pip list --local显示全是全局包、安装时提示Defaulting to user installation because normal site-packages is not writeable的直接原因。
Windows下虚拟环境激活失效的常见原因:
- PowerShell默认执行策略拦截,禁止运行未签名的激活脚本
- 系统环境变量里全局Python、conda的路径优先级过高,覆盖了虚拟环境路径
- 激活脚本执行后没有正确加载环境变量配置
2. 依赖版本与Python 3.10完全不兼容
你当前用的Python 3.10和requirements.txt里锁定的老旧依赖没有适配的预编译安装包,哪怕虚拟环境激活正常也会安装失败:
opencv-python==3.3.0.10最高仅支持Python 3.6tensorflow==1.10.1最高仅支持Python 3.6numpy==1.13.3最高仅支持Python 3.6
你之前尝试切换多个Python版本仍失败,核心是切换的版本均高于3.6——TensorFlow 1.x系列官方从未提供过Python 3.7及以上版本的安装包,PyPI自然检索不到匹配的发行版。
修复步骤
按顺序操作即可解决:
第一步:准备兼容的Python版本
- 直接删除当前项目目录下的
objectremoval文件夹,清理掉失效的虚拟环境 - 下载安装Python 3.6.8 x64(这是和上述三个依赖完全兼容的最高稳定补丁版),安装时不要勾选"Add Python to PATH"避免覆盖你现有的Python 3.10,自定义安装路径到非系统目录比如
C:\Python36即可 - 安装完成后打开新的命令提示符窗口,执行
py -3.6 --version,能正常返回版本号即代表识别成功
第二步:重新创建虚拟环境并正确激活
- 进入项目根目录
D:\test1\Deep-Object-Removal,执行命令用Python 3.6创建虚拟环境:
py -3.6 -m venv objectremoval
- 临时调整当前窗口的路径优先级,执行:
set PATH=D:\test1\Deep-Object-Removal\objectremoval\Scripts;%PATH%
- 执行激活脚本:
call D:\test1\Deep-Object-Removal\objectremoval\Scripts\activate.bat
- 验证激活状态:执行
where python,第一条输出必须是D:\test1\Deep-Object-Removal\objectremoval\Scripts\python.exe,再执行python --version返回3.6.8,就代表虚拟环境激活正常,不会再调用全局Python。
如果你习惯用PowerShell操作,需要先以管理员身份打开PowerShell,执行
Set-ExecutionPolicy RemoteSigned,输入Y确认权限策略后再走上述激活流程,否则会因为脚本权限拦截导致激活失败。
第三步:安装项目依赖
确认虚拟环境激活正常后,直接执行:
pip install --upgrade pip setuptools wheel pip install -r requirements.txt
执行过程不会再出现找不到匹配安装包的报错。
替代方案(不想安装Python 3.6)
如果不想保留多个Python版本,可以修改requirements.txt里的版本约束,适配Python 3.10:
opencv-python==4.6.0.66 tensorflow==2.9.1 numpy==1.23.1
注意:因为跨大版本升级了TensorFlow和OpenCV,项目代码里可能存在少量旧API调用不兼容的问题,需要手动修改对应代码接口,稳定性不如直接用Python 3.6环境。
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

