Flask - WSGI - 没有名为 'flask' 的模块
Flask - WSGI - No module named 'flask'
我一直在关注 Sentdex 的 Flask 教程。他正在使用 Venv 来设置他的 Flask,但没有将他的 Python 设置为使用 Venv。我已经尝试在全球范围内安装 Flask - 但它仍然无法正常工作。尝试浏览服务器 returns 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'
__init__.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def homepage():
return "Success"
if __name__ == "__main__":
app.run()
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]'
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>
作为寻找解决方案时的礼貌行为,我在谷歌上搜索了更多,并设法从 Nathan Nichols 在这里的 YouTube 评论中找到了解决方案:
- 编辑
/etc/apache2/sites-available/FlaskApp.conf
在"WSGIScriptAlias"行之前添加以下两行:
WSGIDaemonProcess FlaskApp python-path=/var/www/FlaskApp:/var/www/FlaskApp/FlaskApp/venv/lib/python2.7/site-packages
WSGIProcessGroup FlaskApp
- 使用 "service apache2 restart"
重新启动 Apache
我当然把Python版本换成了python3.5,这就是我运行.
根据http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html.
你应该编辑 /etc/apache2/sites-available/FlaskApp.conf
在 WSGIScriptAlias
上方添加这些
WSGIDaemonProcess FlaskApp python-home=/var/www/FlaskApp/FlaskApp/venv/FlaskApp
WSGIProcessGroup FlaskApp
我遇到了同样的问题,顺便修复一下
首先安装python-virtualenv
然后从放置假发的 Flask 应用程序目录 python 文件 运行
virtualenv env
这将在 Flask 目录中创建 env 目录并包含本地 python 安装。
接下来通过这个命令激活虚拟环境source env/bin/activate
激活虚拟环境后运行pip install flask
运行 pip --version
你会看到这样的东西
点子 19.0.3 来自 /var/www/html/flaskapp/env/local/lib/python2.7/site-packages/pip (python 2.7)
复制此 python 路径
WSGIDaemonProcess FlaskApp python-path=/var/www/html/flaskapp:/var/www/html/flaskapp/env/local/lib/python2.7/site-packages
WSGIProcessGroup FlaskApp
在 apache 的 sites-available 目录中 FlaskApp.conf 添加以上行
注意在 运行ning pip --version
之后输入 python-path
对我来说没有任何效果,但我只是在我的 .py 和 .wsgi 文件的开头添加了以下行瞧它起作用了:
import sys
sys.path.append('/home/ubuntu/pythonVirtual/lib/python3.6/site-packages)
这里 pythonVirtual
是我 Python
的虚拟目录
我浪费了大约 25 分钟的时间来寻找解决方案,在遵循了我能找到的所有其他资源之后,我还做了以下事情:
sudo apt-get install libapache2-mod-wsgi-py3
确保在 libapache2-mod-wsgi-py3 的末尾有“-py3”,否则运行时将默认为 Python2.7
见本页底部:https://flask.palletsprojects.com/en/1.1.x/deploying/mod_wsgi/#configuring-apache
上面写着:
对于 Python 3 将以下行添加到 .wsgi 文件的顶部:
activate_this = '/path/to/env/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
其中 /path/to/env 是您安装 Flask 的任何虚拟环境的路径,正如其他人在此线程中所描述的那样。 “python-path”和此处描述的一些其他 VirtualHost 配置是不必要的。
我一直在关注 Sentdex 的 Flask 教程。他正在使用 Venv 来设置他的 Flask,但没有将他的 Python 设置为使用 Venv。我已经尝试在全球范围内安装 Flask - 但它仍然无法正常工作。尝试浏览服务器 returns 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'
__init__.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def homepage():
return "Success"
if __name__ == "__main__":
app.run()
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]'
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>
作为寻找解决方案时的礼貌行为,我在谷歌上搜索了更多,并设法从 Nathan Nichols 在这里的 YouTube 评论中找到了解决方案:
- 编辑
/etc/apache2/sites-available/FlaskApp.conf
在"WSGIScriptAlias"行之前添加以下两行:
WSGIDaemonProcess FlaskApp python-path=/var/www/FlaskApp:/var/www/FlaskApp/FlaskApp/venv/lib/python2.7/site-packages WSGIProcessGroup FlaskApp
- 使用 "service apache2 restart" 重新启动 Apache
我当然把Python版本换成了python3.5,这就是我运行.
根据http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html.
你应该编辑
/etc/apache2/sites-available/FlaskApp.conf
在
上方添加这些WSGIScriptAlias
WSGIDaemonProcess FlaskApp python-home=/var/www/FlaskApp/FlaskApp/venv/FlaskApp
WSGIProcessGroup FlaskApp
我遇到了同样的问题,顺便修复一下
首先安装python-virtualenv
然后从放置假发的 Flask 应用程序目录 python 文件 运行
virtualenv env
这将在 Flask 目录中创建 env 目录并包含本地 python 安装。
接下来通过这个命令激活虚拟环境source env/bin/activate
激活虚拟环境后运行pip install flask
运行 pip --version
你会看到这样的东西
点子 19.0.3 来自 /var/www/html/flaskapp/env/local/lib/python2.7/site-packages/pip (python 2.7)
复制此 python 路径
WSGIDaemonProcess FlaskApp python-path=/var/www/html/flaskapp:/var/www/html/flaskapp/env/local/lib/python2.7/site-packages
WSGIProcessGroup FlaskApp
在 apache 的 sites-available 目录中 FlaskApp.conf 添加以上行
注意在 运行ning pip --version
之后输入 python-path对我来说没有任何效果,但我只是在我的 .py 和 .wsgi 文件的开头添加了以下行瞧它起作用了:
import sys
sys.path.append('/home/ubuntu/pythonVirtual/lib/python3.6/site-packages)
这里 pythonVirtual
是我 Python
我浪费了大约 25 分钟的时间来寻找解决方案,在遵循了我能找到的所有其他资源之后,我还做了以下事情:
sudo apt-get install libapache2-mod-wsgi-py3
确保在 libapache2-mod-wsgi-py3 的末尾有“-py3”,否则运行时将默认为 Python2.7
见本页底部:https://flask.palletsprojects.com/en/1.1.x/deploying/mod_wsgi/#configuring-apache
上面写着:
对于 Python 3 将以下行添加到 .wsgi 文件的顶部:
activate_this = '/path/to/env/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
其中 /path/to/env 是您安装 Flask 的任何虚拟环境的路径,正如其他人在此线程中所描述的那样。 “python-path”和此处描述的一些其他 VirtualHost 配置是不必要的。