【发布时间】:2017-07-13 07:22:25
【问题描述】:
我正在尝试使用 mod_wsgi 从 EC2 实例上运行一个非常简单的 Flask 应用程序。我的 apache 错误日志一直显示
"ImportError: No module named pandas, referer: http://xxxxx"
尽管我已经安装了 pandas。作为参考,pip freeze 产生了我
click==6.7
Flask==0.12
itsdangerous==0.24
Jinja2==2.9.5
MarkupSafe==0.23
numpy==1.12.0
pandas==0.19.2
python-dateutil==2.6.0
pytz==2016.10
scikit-learn==0.18.1
scipy==0.18.1
six==1.10.0
sklearn==0.0
virtualenv==15.1.0
Werkzeug==0.11.15
以前,我尝试使用 virtualenv(我的 venv 的 pip freeze 与我上面提出的非常相似),然后修改 .wsgi 文件以使用带有代码的 virtualenv:
activate_this = '/home/ubuntu/sklearn-env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
通过 virtualenv 执行此操作为我提供了一个烧瓶应用程序,当我发出一个简单的 GET 请求时超时,并且在 apache 错误日志中没有任何用处,并且使用我的本地 pip 为我的所有 Python 模块提供了 ImportErrors,尽管事实上我我能够毫无问题地打开一个 Python2.7 实例并导入熊猫、烧瓶等(Python 2.7.12 供参考)。我完全被难住了,有什么建议吗?
编辑:所以我实际上解决了本地 pip 的问题,就导入错误而言,但现在,我的本地 pip 和使用我的 virtualenv 只会给我一个烧瓶应用程序,如果我导入除了烧瓶之外的任何东西,它就会永远挂起.如果我将这段代码复制到
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from Flask!'
if __name__ == '__main__':
app.run()
它工作得很好。我实际上可以添加 import pandas,现在我的应用程序只是无限期地旋转。来自 apache 错误日志的唯一内容是
[2017 年 2 月 23 日星期四 01:02:52.010864] [wsgi:warn] [pid 11686:tid 140507506435968] mod_wsgi:为 Python/2.7.11 编译。 [2017 年 2 月 23 日星期四 01:02:52.010902] [wsgi:warn] [pid 11686:tid 140507506435968] mod_wsgi:使用 Python/2.7.12 的运行时。 [Thu Feb 23 01:02:52.011483 2017] [mpm_event:notice] [pid 11686:tid 140507506435968] AH00489: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/2.7.12 已配置——恢复正常操作 [Thu Feb 23 01:02:52.011498 2017] [core:notice] [pid 11686:tid 140507506435968] AH00094:命令行:'/usr/sbin/apache2'
我的印象是,实际上并没有破坏任何东西。
我的 .conf 文件只是在修改默认文件。
<VirtualHost *:80>
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
WSGIDaemonProcess classification-poc threads=5
WSGIScriptAlias / /var/www/html/classification-poc/server.wsgi
<Directory classification-poc>
WSGIProcessGroup classification-poc
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
我的 server.wsgi 文件只是
import sys
sys.path.insert(0, '/var/www/html/classification-poc')
from testserver import app as application
当我不使用 virtualenv 时。当我尝试使用 virtualenv 时,我只是添加了
activate_this = '/home/ubuntu/sklearn-env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
到文件的顶部。
【问题讨论】:
-
显示处理wsgi配置的代码
-
添加到我的最新编辑中
-
你发现问题了吗?这里也有同样的问题!
标签: apache python-2.7 amazon-ec2 flask mod-wsgi