Python虚拟环境激活后调用主系统pip 已安装gtts无法识别问题
问题原因
- 虚拟环境激活操作未实际生效,当前终端的环境变量未被虚拟环境配置覆盖,导致终端调用的
pip仍然是全局环境下的程序,而非虚拟环境内的pip。 - 常见触发场景:
- 使用PowerShell终端执行
activate.bat:PowerShell默认限制未签名脚本运行,activate.bat实际未执行成功,没有修改当前会话的环境变量 - 系统环境变量中全局Python的路径优先级高于当前目录,即使激活脚本执行完成,终端检索可执行文件时仍优先匹配到全局的pip、python程序
- 使用PowerShell终端执行
解决方案
方法1:CMD终端下正确激活
- 打开CMD终端(不要使用PowerShell)
- 在项目根目录直接执行激活命令,不需要提前进入
venv/Scripts目录:venv\Scripts\activate.bat - 激活成功后终端行首会出现
(venv)标识,可执行pip --version验证,返回路径包含venv目录即为生效,此时再执行pip freeze即可显示虚拟环境内的依赖包。
方法2:配置PowerShell激活权限
如果你习惯使用PowerShell,可按以下步骤修改配置:
- 右键以管理员身份打开PowerShell,执行命令:
Set-ExecutionPolicy RemoteSigned
输入Y确认修改,该配置仅允许本地未签名脚本运行,无额外安全风险。 - 回到项目根目录,执行PowerShell版本的激活脚本:
venv\Scripts\Activate.ps1
注意此处使用.ps1后缀的脚本,而非CMD使用的.bat后缀脚本,激活成功后行首同样会出现(venv)标识。
临时规避方案
如果不想修改终端配置,可每次直接指定虚拟环境内的程序路径执行操作:
- 安装依赖:
venv\Scripts\pip.exe install 包名 - 运行代码:
venv\Scripts\python.exe 脚本名.py - 查看已安装依赖:
venv\Scripts\pip.exe freeze
内容的提问来源于stack exchange,提问作者Tasukete Onegaishimasu
相关产品推荐
相关产品推荐

