【问题标题】:(Another) ImportError with Flask under mod_wsgi(另一种) mod_wsgi 下 Flask 的 ImportError
【发布时间】:2013-04-23 22:04:27
【问题描述】:

抱歉,这似乎是对之前几个问题的重复,但到目前为止,这些问题都没有帮助我:-/

我编写了一个 Flask 应用程序,我试图在 mod_wsgi 和 apache2 下部署。

我收到以下ImportError:

[Tue Apr 23 23:46:56 2013] [info] Server built: Dec  9 2012 18:57:18
[Tue Apr 23 23:46:56 2013] [info] mod_wsgi (pid=7445): Initializing Python.
[Tue Apr 23 23:46:56 2013] [info] mod_wsgi (pid=7445): Attach interpreter ''.
[Tue Apr 23 23:47:10 2013] [info] [client 127.0.0.1] mod_wsgi (pid=7443, process='foo.com', application=''): Loading WSGI script '/Users/admin/Sites/p4p/p4p_jsapp/pfp/pfp.wsgi'.
[Tue Apr 23 23:47:10 2013] [error] [client 127.0.0.1] mod_wsgi (pid=7443): Target WSGI script '/Users/admin/Sites/p4p/p4p_jsapp/pfp/pfp.wsgi' cannot be loaded as Python module.
[Tue Apr 23 23:47:10 2013] [error] [client 127.0.0.1] mod_wsgi (pid=7443): Exception occurred processing WSGI script '/Users/admin/Sites/p4p/p4p_jsapp/pfp/pfp.wsgi'.
[Tue Apr 23 23:47:10 2013] [error] [client 127.0.0.1] Traceback (most recent call last):
[Tue Apr 23 23:47:10 2013] [error] [client 127.0.0.1]   File "/Users/admin/Sites/p4p/p4p_jsapp/pfp/pfp.wsgi", line 7, in <module>
[Tue Apr 23 23:47:10 2013] [error] [client 127.0.0.1]     from PfpServer import app as application
[Tue Apr 23 23:47:10 2013] [error] [client 127.0.0.1]   File "/Users/admin/Sites/p4p/p4p_jsapp/pfp/PfpServer.py", line 4, in <module>
[Tue Apr 23 23:47:10 2013] [error] [client 127.0.0.1]     import pandas as pd
[Tue Apr 23 23:47:10 2013] [error] [client 127.0.0.1] ImportError: No module named pandas

Apache 配置:

<VirtualHost *:80>

    ServerName  www.foo.com
    ServerAlias foo.com

    DocumentRoot /Users/admin/Sites/p4p/p4p_jsapp/www

    <Directory /Users/admin/Sites/p4p/p4p_jsapp/www>
    Order allow,deny
    Allow from all
    </Directory>

    WSGIDaemonProcess foo.com user=admin processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup foo.com

    WSGIScriptAlias / /Users/admin/Sites/p4p/p4p_jsapp/pfp/pfp.wsgi

    <Directory /Users/admin/Sites/p4p/p4p_jsapp/pfp>
    WSGIProcessGroup foo.com
    WSGIApplicationGroup %{GLOBAL}
    Order allow,deny
    Allow from all
    </Directory>

</VirtualHost> 

pfp.wsgi:

import sys

activate_this = '/Users/admin/Sites/p4p/p4p_jsapp/foo/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

sys.path.append('/Users/admin/Sites/p4p/p4p_jsapp/pfp')
from PfpServer import app as application

PfPServer.py:

import numpy as np
import pandas as pd
import ujson
from flask import Flask, Response, request, render_template
import traceback

app = Flask(__name__)

# ...

我尝试过使用和不使用 virtualenv 来查看是否有帮助,但无论如何我都会遇到同样的错误。这里有什么问题?

编辑:为了完全清楚,我已经安装了 pandas 并且应用程序在调试器中本地运行良好

edit2:好的,解决方案在 sys.path 中 - 我已经安装了最新的 pandas RC,它位于非标准路径上,这就是为什么当我简单地添加 std 站点包时它不起作用的原因单独的路径:

sys.path.append('/Users/admin/dev/pandas/pandas-0.11.0rc1')
sys.path.append('/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages')

...工作 - 谢谢大家!

【问题讨论】:

  • 你在哪里安装了 pandas?那个目录在sys.path吗?
  • 从命令行 Python 确定您正在使用的 Python 安装和版本,并在 mod_wsgi 下执行相同操作。 code.google.com/p/modwsgi/wiki/… 然后在 WSGI 应用程序中,从命令行运行时打印出 'pd.__file__' 的值。编辑您的问题并提供结果。

标签: python apache2 flask virtualenv mod-wsgi


【解决方案1】:

我的猜测会是 apache 运行的 Python 与您用于测试应用程序的 Python 不同。

【讨论】:

  • WSGIPythonExecutable 只存在于 mod_wsgi 1.0 中。它在多年前被删除。您也不一定只是尝试将 mod_wsgi 指向不同的 Python 版本。
  • 有趣的是,我用谷歌搜索了如何使用 mod_wsgi 设置 Python 可执行文件,结果出现了。很高兴知道它不受支持 - 将被删除。
  • 文档中有 1.X 反对指令描述。
猜你喜欢
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 2017-03-03
  • 1970-01-01
  • 2017-02-20
相关资源
最近更新 更多