在PythonAnywhere部署changedetection时遇WSGI AttributeError错误求助
解决PythonAnywhere托管changedetection.io时的
X509_V_FLAG_NOTIFY_POLICY错误 错误原因
这个AttributeError是pyOpenSSL版本与PythonAnywhere系统底层OpenSSL不兼容导致的:高版本pyOpenSSL引入了X509_V_FLAG_NOTIFY_POLICY常量,但PythonAnywhere服务器的系统OpenSSL版本偏旧,不支持该特性。
解决步骤
1. 降级pyOpenSSL到兼容版本
在PythonAnywhere的控制台中执行以下命令,安装适配旧版OpenSSL的pyOpenSSL版本:
pip install pyopenssl==23.2.0 --user
如果使用虚拟环境,先激活环境再执行该命令。
2. 确保WSGI文件路径配置正确
在你的WSGI文件(/var/www/michaelhowardsandiego_pythonanywhere_com_wsgi.py)开头添加用户site-packages路径,确保程序能找到正确的依赖:
import sys # 将用户目录下的site-packages加入路径 sys.path.insert(0, '/home/michaelhowardsandiego/.local/lib/python3.10/site-packages')
3. 推荐使用虚拟环境隔离依赖(可选但更稳定)
为了避免全局包冲突,建议用虚拟环境安装changedetection.io:
- 创建虚拟环境:
mkvirtualenv --python=/usr/bin/python3.10 changedetect-env - 激活环境后安装程序:
pip install changedetection.io - 在WSGI文件中添加虚拟环境激活代码:
# 激活虚拟环境 activate_this = '/home/michaelhowardsandiego/.virtualenvs/changedetect-env/bin/activate_this.py' with open(activate_this) as file_: exec(file_.read(), dict(__file__=activate_this)) # 导入应用 from changedetectionio import app as application
4. 重启Web应用
在PythonAnywhere的Web应用控制面板中,点击"Reload"按钮,让配置生效。
内容的提问来源于stack exchange,提问作者Michael Howard
相关产品推荐
相关产品推荐

