pip在venv中提示没有ssl模块的解决方法

问题描述

一直以来使用python项目的时候,都是选择Anaconda下的python.exe作为解释器。

今天在项目中创建了venv并使用该目录下python时,使用pip时报错显示

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available

问题本质

Python的ssl模块不可用,导致pip无法正常工作。

ssl模块不可用的原因是ssl.pyd没有位于环境变量中

发现问题

_ssl模块异常导入

排错时发现在pycharm的终端中,使用Anaconda作为解释器运行

1
(base)E:\project\python\xxx> python -m ssl

可以正常运行

使用venv作为解释器运行(在Window命令提示符下也是如此)

1
(venv)E:\project\python\xxx> python -m ssl

则会报错

ImportError: DLL load failed while importing _ssl: 找不到指定的模块。

坏境变量不同

一开始认为是解释器不同造成的问题,但是在cmd中用的也是Anaconda下的python。

通过执行python的指令

1
2
sys.path #  Python 模块搜索路径。
sys.executable # Python 解释器的路径

从结果中确认了跟解释器无关

通过执行指令

1
echo %PATH%

从结果中发现在venv和cmd中坏境变量与base(Anaconda)有所不同

解决方法

通过比对和查找_ssl模块位置,发现D:\ProgramData\Anaconda3\Library\bin\路径并不存在系统坏境变量中,将路径加入Path后重启pycharm和cmd,_ssl模块能正常导入,pip正常运行

相关资料

[51c51百科频道]: https://www.51c51.com/baike/xinxi/5/296563.html “Pycharm环境不同于命令行”
[ChatGPT]: https://chat.openai.com/ “感谢AI🏻”