我从(https://pythonprogramming.net/creating-first-flask-web-app/)运行整个教程,我遇到了以下问题。我目前运行的是apache2服务器,这是错误日志。
[Wed Feb 15 16:57:45.115664 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] mod_wsgi (pid=29447): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
[Wed Feb 15 16:57:45.115711 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] mod_wsgi (pid=29447): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'.
[Wed Feb 15 16:57:45.115730 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] Traceback (most recent call last):
[Wed Feb 15 16:57:45.115749 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] File "/var/www/FlaskApp/flaskapp.wsgi", line 12, in <module>
[Wed Feb 15 16:57:45.115799 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] from FlaskApp import app as application
[Wed Feb 15 16:57:45.115819 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] ImportError: No module named FlaskApp
我的配置文件如下
<VirtualHost *:80>
ServerName xxx.xxx.xxx.xxx
ServerAdmin Admin@server.com
WSGIDaemonProcess FlaskApp python-path=/var/www/FlaskApp:/var/www/FlaskApp/FlaskApp/venv/lib/python2.7/site-packages
WSGIProcessGroup FlaskApp
WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
<Directory /var/www/FlaskApp/FlaskApp/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/FlaskApp/FlaskApp/static
<Directory /var/www/FlaskApp/FlaskApp/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我的Flask应用程序wsgi文件如下
#!/usr/bin/python
#import sys
import os, sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp")
activate_this = '/var/www/FlaskApp/FlaskApp/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
from FlaskApp import app as application
application.secret_key = 'gfuaskdf24432giafsd23khk'
和my init.py如下所示
from flask import Flask
app = Flask(__name__)
@app.route('/')
def homepage():
return "Hi there, how ya doin?"
if __name__ == "__main__":
app.run()
我很确定这个问题不是在 init.py上,而是可能在wsgi文件或虚拟机上。我尝试了许多方法,但都无济于事(但我也可能做错了)。
需要社区的帮助。
2条答案
按热度按时间nnsrf1az1#
你确定你的初始化文件命名为
__init__.py
了吗?我看到你在你的问题中引用了init.py
。这可能是__init__.py
显示python它是一个包的一部分的问题,当你导入其他包时,它会首先查看那个文件。如果你没有正确地命名它,也许这就是为什么它说它找不到你需要的模块的原因?zc0qhyus2#
我知道这个问题问得太久了,但是,现在,如果你不使用python虚拟环境,你也会面临这个问题:
我正在使用APACHE 2- mod_wsgi。用于生产目的。我的操作系统:Linux / Ubuntu操作系统。
我使用虚拟环境不是因为服务器上没有其他项目,所以没有必要。
配置完所有内容后,我收到了以下错误:
导入错误:无法从“flask”(未知位置)导入名称“Flask”
在简历中,www-data无法导入“Flask”。它不是
flask
,而是Flask
。我给你的建议:
a)像www-data用户一样获得正确的视图,并像这样做:
现在,提示符已更改为www-data。
下一步:
B)作为www-data,解析以下内容:
您将在/var/log/apache 2/error. log中看到相同的消息
如何解决这个问题,而不是像疯了一样四处搜索,更改代码等...
c)给予用户
www-data
读取Python3的dist-packages文件夹的权限,如下所示:d)现在,只需重复
b
项,错误就消失了!重新启动apache 2,刷新页面!开心点!