【发布时间】:2021-01-02 20:42:47
【问题描述】:
我在 apache Web 服务器 (Amazon Linux 2) 上使用 wsgi 运行烧瓶脚本。
我在使用 Python 3.7 时收到“ModuleNotFoundError: No module named 'cv2'”错误。
-
我没有收到其他模块的这个错误,我怀疑这是因为 cv2 是唯一存储在 “/home/ec2-user/.local/lib/python3.7/site-packages”。其他在“/usr/local/lib/python3.7/site-packages/”中
-
我检查了 site-packages 文件夹的文件权限,并且该目录没有读写权限。 我为所有用户添加了它(脚本由 apache 用户运行,而不是所有者)。
-
我检查了“/home/ec2-user/.local/lib/python3.7/site-packages”在 sys.path 中
-
当我在没有 wgsi 的情况下运行烧瓶脚本时,导入工作正常
-
这不是 python 2 和 3 混淆的问题,因为导入我只有在 python3 中的模块是有效的
-
我的 mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so 文件兼容 python 3.7
-
由于我没有使用守护程序模式,我可以尝试在我的 apache 配置中添加
WSGIPythonPath /home/ec2-user/.local/lib/python3.7/site-packages/行,这并不奇怪没有解决问题 -
我尝试在 cv2 导入之前添加
sys.path.insert(0, '/home/ec2-user/.local/lib/python3.7/site-packages/'),但没有成功 -
我没有运行任何类型的虚拟环境
conf/httpd-le-ssl.conf
<IfModule mod_ssl.c>
#WSGIPythonPath /home/ec2-user/.local/lib/python3.7/site-packages/
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName "domain.app"
ServerAdmin "admin@domain.app"
ServerAlias "www.domain.app"
WSGIScriptAlias / /var/www/application/myapplication.wsgi
<Directory /var/www/application>
Require all granted
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/domain.app/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.app/privkey.pem
</VirtualHost>
</IfModule>
感谢任何帮助。
【问题讨论】:
-
你可以尝试运行 virtualenv 吗?
标签: python apache opencv flask mod-wsgi