首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Flask -无法将目标WSGI脚本作为Python模块加载

Python Flask -无法将目标WSGI脚本作为Python模块加载
EN

Stack Overflow用户
提问于 2018-01-14 06:06:01
回答 2查看 1.9K关注 0票数 1

我已经使用python flask编写了REST,现在我想使用apache来运行它们,以便将它们投入生产,但会出现错误。

结构是这样的:

/opt/myapp/venv/api/app-code.py

代码语言:javascript
复制
if __name__ == '__main__':
    app.run()

/var/www/html/myapp/myapp.wsgi

代码语言:javascript
复制
import sys
sys.path.insert(0, "/opt/myapp/venv/api")
from app-code import app
application = app

/etc/httpd/conf.d/ssl.conf

代码语言:javascript
复制
<VirtualHost *:443>
    ServerName hostname.com
    DocumentRoot "/var/www/html/myapp"
    SSLEngine on

    WSGIDaemonProcess myapp  python-path=/opt/myapp/venv/lib/python3.6/site-packages/ threads=5

    <Directory "/var/www/html/myapp">
            Order allow,deny
            Allow from all
    </Directory>
    WSGIScriptAlias / /var/www/html/myapp/myapp.wsgi

    ErrorLog /var/log/httpd/ssl_error_log
    TransferLog /var/log/httpd/ssl_access_log
    LogLevel debug

    SSLCertificateFile /opt/ssl-certs/ssl-cert.pem
    SSLCertificateKeyFile /opt/ssl-certs/ssl-key.pem
    SSLCertificateChainFile /opt/ssl-certs/ssl-certchain.pem
</VirtualHost>

当我进行API调用时,出现以下错误:

代码语言:javascript
复制
[Sun Jan 14 03:22:50 2018] [info] Initial (No.1) HTTPS request received for child 2 (server hostname.com:443)
[Sun Jan 14 03:22:50 2018] [info] [client 103.3.43.163] mod_wsgi (pid=24539, process='', application='hostname.com|'): Loading WSGI script '/var/www/html/myapp/myapp.wsgi'.
[Sun Jan 14 03:22:50 2018] [error] [client 103.3.43.163] mod_wsgi (pid=24539): Target WSGI script '/var/www/html/myapp/myapp.wsgi' cannot be loaded as Python module.
[Sun Jan 14 03:22:50 2018] [error] [client 103.3.43.163] mod_wsgi (pid=24539): Exception occurred processing WSGI script '/var/www/html/myapp/myapp.wsgi'.
[Sun Jan 14 03:22:50 2018] [error] [client 103.3.43.163] Traceback (most recent call last):
[Sun Jan 14 03:22:50 2018] [error] [client 103.3.43.163]   File "/var/www/html/myapp/myapp.wsgi", line 8, in <module>
[Sun Jan 14 03:22:50 2018] [error] [client 103.3.43.163]     from app-code import app
[Sun Jan 14 03:22:50 2018] [error] [client 103.3.43.163]   File "/opt/myapp/venv/api/app-code.py", line 3, in <module>
[Sun Jan 14 03:22:50 2018] [error] [client 103.3.43.163]     from flask import Flask, abort, request, jsonify, g, url_for
[Sun Jan 14 03:22:50 2018] [error] [client 103.3.43.163] ImportError: No module named flask
[Sun Jan 14 03:22:50 2018] [debug] ssl_engine_kernel.c(1894): OpenSSL: Write: SSL negotiation finished successfully

我看了很多帖子,尝试了不同的选项,但都不能让它运行。

EN

回答 2

Stack Overflow用户

发布于 2018-01-14 07:59:11

这里最关键的是ImportError。要么flask没有安装在您的虚拟环境中,要么apache没有正确处理venv。我认为您可能希望在WSGIDaemonProcess指令中使用python-home而不是python-path。[http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html](mod_wsgi应该会有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2018-01-15 00:44:43

经过多次尝试,我终于能让它正常工作了。

我使用了错误的wsgi模块作为mod_wsgi.so,在将它改为mod_wsgi_python3.6.so之后,一切都开始工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48244714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档