起因
运行 Django 网站报错。在 Pycharm 中运行的时候没问题,同样的命令,bat脚本运行就报错。
刚开始以为是参数的锅,后来发现是环境变量没配好。但最终还是用临时环境变量解决。
解决
ssl 模块并不是不存在,只是没被找到罢了。
一般来说,把 ssl 所在路径,加到环境变量里即可:
ssl 在 Library\bin 目录下。
确保这三个路径都添加了,避免麻烦。
D:\xxx\anaconda3-2020\Library\bin
D:\xxx\anaconda3-2020\Scripts
D:\xxx\anaconda3-2020
但是我发现这种做法对我没用,依然报错 _ssl。
在 Pycharm 里可以运行,用 cmd 同样的命令也可以运行,偏偏用 bat 脚本就不行。
我在 bat 和 cmd 分别打印出 python 版本和 PATH 路径值,发现 bat 路径竟然少了 bin 的路径。
我不明白为什么明明刚刚添加的路径没起作用,也许重启能解决。
我的解决办法: 增加临时环境变量。只要程序运行期间起作用就行了。
完整的测试脚本如下:
@echo off
python --version
echo %PATH%
set sslpath=D:\xxx\anaconda3-2020\Library\bin
set path=%sslpath%;%path%
python manage.py runserver 0.0.0.0:8001
REM D:\\xxx\\anaconda3-2020\\python.exe E:\\yyy\\manage.py runserver 0.0.0.0:8001 --noreload
pause