虚拟环境中pip freeze列出全局包,如何仅显示虚拟环境内包?
解决虚拟环境中pip freeze显示全局包的问题
我之前也碰到过一模一样的困扰!这大概率是因为激活虚拟环境后,你的pip命令还是指向了全局版本,而非虚拟环境内部的pip。给你几个实用的解决办法:
直接调用虚拟环境内pip的绝对路径
这是最稳妥的方式,绕开环境变量的问题。- Windows系统:
venv\Scripts\pip freeze - Linux/macOS系统:
venv/bin/pip freeze
这样输出的肯定是当前虚拟环境里的包列表。
- Windows系统:
确认虚拟环境是否真的激活成功
先看命令行提示符最前面有没有(venv)的前缀,如果没有,说明激活操作没生效。另外可以用命令验证pip的路径:- Windows下运行:
where pip,检查输出的第一条路径是不是venv\Scripts\pip.exe - Linux/macOS下运行:
which pip,检查输出路径是不是venv/bin/pip
如果路径不对,Windows用户可以试试以管理员身份打开PowerShell,先执行Set-ExecutionPolicy RemoteSigned允许执行脚本,再重新运行venv/Scripts/activate激活环境。
- Windows下运行:
重新创建虚拟环境
有时候虚拟环境在创建过程中可能出现损坏,删掉现有的venv文件夹,重新执行:python -m venv venv然后重新激活环境,再尝试
pip freeze。确保创建虚拟环境用的是目标Python版本
如果你的系统里装了多个Python版本(比如Python3.6、Python3.9),要确保用对应版本的Python来创建虚拟环境。比如想基于Python3.6创建,就执行:python3.6 -m venv venv激活后再用
pip freeze,就能对应上这个版本虚拟环境里的包了。
内容的提问来源于stack exchange,提问作者Mojimi
相关产品推荐
相关产品推荐

