Flask - WSGI - 没有名为'flask'的模块

Dav*_*xxa 8 python apache mod-wsgi flask web

我一直在关注Sentdex的Flask教程.他正在使用Venv设置他的Flask,但没有设置他的Python与Venv合作.我已尝试在全球范围内安装Flask - 但它仍然无效.尝试浏览到服务器会返回500内部服务器错误

我收到了通常的no module named flask错误.

errorFGL.log

[Sun Feb 05 11:22:32.043925 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814] mod_wsgi (pid=26340): Target WSGI script '/var/www-fgl/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
[Sun Feb 05 11:22:32.044105 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814] mod_wsgi (pid=26340): Exception occurred processing WSGI script '/var/www-fgl/FlaskApp/flaskapp.wsgi'.
[Sun Feb 05 11:22:32.044243 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814] Traceback (most recent call last):
[Sun Feb 05 11:22:32.045011 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814]   File "/var/www-fgl/FlaskApp/flaskapp.wsgi", line 8, in <module>
[Sun Feb 05 11:22:32.045070 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814]     from FlaskApp import app as application
[Sun Feb 05 11:22:32.045549 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814]   File "/var/www-fgl/FlaskApp/FlaskApp/__init__.py", line 1, in <module>
[Sun Feb 05 11:22:32.045594 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814]     from flask import Flask
[Sun Feb 05 11:22:32.045689 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814] ImportError: No module named 'flask'
Run Code Online (Sandbox Code Playgroud)

__init__.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def homepage():
    return "Success"

if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)

flaskapp.wsgi

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)

sys.path.insert(0,"/var/www-fgl/FlaskApp/")

from FlaskApp import app as application
application.secret_key = '[REDACTED]'
Run Code Online (Sandbox Code Playgroud)

FGL-database.conf

<VirtualHost *:80>
        ServerName [REDACTED]
        WSGIScriptAlias / /var/www-fgl/FlaskApp/flaskapp.wsgi
        <Directory /var/www-fgl>
            Require all granted
        </Directory>
        Alias /static /var/www-fgl/FlaskApp/FlaskApp/static
        <Directory /var/www-fgl/FlaskApp/FlaskApp/static/>
            Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/errorFGL.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/accessFGL.log combined




</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

小智 13

我浪费了大约 25 分钟来找到解决方案,在遵循了我能找到的所有其他资源之后,我还执行了以下操作:

sudo apt-get install libapache2-mod-wsgi-py3
Run Code Online (Sandbox Code Playgroud)

确保在 libapache2-mod-wsgi-py3 末尾有“-py3”,否则运行时将默认为 Python2.7

来源:https : //vishnut.me/blog/ec2-flask-apache-setup.html


Dav*_*xxa 8

当找到解决方案的礼貌行为时,我搜索了一下,并以某种方式设法从Nathan Nichols的YouTube文章中找到了解决方案:

https://www.digitalocean.com/community/tutorials/how-to-run-django-with-mod_wsgi-and-apache-with-a-virtualenv-python-environment-on-a-debian-vps

  1. 编辑 /etc/apache2/sites-available/FlaskApp.conf
  2. 在"WSGIScriptAlias"行之前添加以下两行:

    WSGIDaemonProcess FlaskApp python-path=/var/www/FlaskApp:/var/www/FlaskApp/FlaskApp/venv/lib/python2.7/site-packages
    WSGIProcessGroup FlaskApp
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用"service apache2 restart"重新启动Apache

我当然用python3.5替换了Python版本,这正是我正在运行的.