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 | sys.path # 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🏻”