【发布时间】:2015-01-26 03:40:54
【问题描述】:
使用 Flask、apache2 和 Python 3.4.2 运行我的服务器时出现 500 内部服务器错误。
一开始我没有创建虚拟环境就安装了 Flask,所以我认为这可能是一个原因。但是,我后来使用以下方法为我的应用创建了虚拟环境:
python3.4 -m venv venv
source venv/bin/activate
(venv) pip3 install Flask
我通过使用 python3 __init.py 运行我的应用程序进行了检查,它在本地运行。 然后我重新加载了我的 apache2 服务器,仍然得到同样的错误。请参阅以下错误日志文件的输出:
mod_wsgi (pid=25667): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=25667): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'.
Traceback (most recent call last):
File "/var/www/FlaskApp/flaskapp.wsgi", line 11, in <module>
from XYZ import app as application
File "/var/www/FlaskApp/XYZ/__init__.py", line 1, in <module>
from flask import Flask, render_template
ImportError: No module named flask
有什么建议可以解决吗?
etc/apache2/sites-available 中的 FlaskApp.conf 文件
<VirtualHost *:80>
ServerName xyz.com
ServerAlias www.xyz.com
ServerAdmin contact@xyz.com
WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
<Directory /var/www/FlaskApp/XYZ/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/FlaskApp/XYZ/static
<Directory /var/www/FlaskApp/XYZ/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
这是 apache2 错误日志文件中的一行:
AH00489: Apache/2.4.10 (Ubuntu) mod_wsgi/3.5 Python/2.7.8 configured -- resuming normal operations
看起来 mod_wsgi 正在尝试使用 2.7.8 而不是 3.4。我该如何解决?
【问题讨论】:
-
我检查了我的 flaskapp 文件夹 - 有一个名为 venv 的文件夹,其中包含 lib 文件夹,其中包含 flask。为什么它不起作用?
-
我注意到有趣的事情 - 当我检查虚拟环境文件夹时,站点包下没有 Flask,即使它显示好像它在我执行 pip3 install Flask 时已安装。我会尝试使用 pip。
-
我尝试使用 pip - 这次 venv 中有烧瓶,但仍然收到相同的错误 - 500 并且 apache2 日志文件中没有烧瓶模块。
-
删除使用 Python 3.x.x 制作的虚拟环境并使用 Pyhton 2.x.x 制作一个
标签: python-3.x flask apache2 wsgi