【问题标题】:mod_wsgi isn't honoring WSGIPythonHomemod_wsgi 不尊重 WSGIPythonHome
【发布时间】:2012-01-29 11:02:57
【问题描述】:

我正在尝试让 WSGI 使用 virtualenv 设置运行。我的 virtualenv 一切正常:

(virtualenv)dev:/var/www/app$ which python
/var/www/virtualenv/bin/python
(virtualenv)dev:/var/www/app$ python
Python 2.6.1 (r261:67515, Dec  5 2008, 22:09:34)
[GCC 4.1.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import importlib
>>>

在我的 httpd.conf 中,我有以下内容,如 here 所述:

WSGIPythonHome /var/www/virtualenv
WSGIPythonPath /var/www/virtualenv/lib/python2.6/site-packages

但是当我尝试通过 apache 加载应用程序时,出现以下错误:

[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] mod_wsgi (pid=15026): Exception occurred processing WSGI script '/var/www/app/wsgi.py'.
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] Traceback (most recent call last):
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1]   File "/var/www/app/wsgi.py", line 29, in <module>
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1]     import importlib
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] ImportError: No module named importlib

我错过了什么?这种问题怎么调试?

【问题讨论】:

  • importlib 主要是 Python 3 的东西(尽管它的 非常 小子集在 2.7 中可用)。它根本不存在于 2.6 中。
  • 好的,但是如果它在命令行中工作,它不应该在 Apache 中工作吗?

标签: python apache mod-wsgi


【解决方案1】:

您的 mod_wsgi 可能是针对不同的 Python 版本编译的,而不是您试图强制它使用的。例如,您不能将针对 Python 2.4 编译的 mod_wsgi 与使用 Python 2.6 构建的虚拟环境一起使用。

首先验证 Python mod_wsgi 的构建版本。

【讨论】:

  • 是的,日志中有一个条目说它符合错误的版本。好的 - 我尝试使用--use-python=/var/www/virtualenv/bin/python 构建它,但它仍然给出相同的警告?我应该使用不同的标志吗?
  • 选项是--with-python,而不是--use-python。在生成的 mod_wsgi.so 上使用 ldd 来验证正在使用哪个 Python 共享库版本。通读文档code.google.com/p/modwsgi/wiki/CheckingYourInstallation
  • @GrahamDumpleton,我很好奇......有没有办法在同一个 Apache 进程下运行多个 mod_wsgi 实例(已针对不同版本的 python 编译)?
  • 没有。您需要具有两个不同 mod_wsgi.so 模块的单独 Apache 实例,每个模块针对不同的 Python 版本。为了能够处理两个不同的 Python 版本,需要对 mod_wsgi 代码进行大量重组并使其更简单,放弃对嵌入式模式的支持。
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 2016-04-10
  • 2011-04-30
  • 2021-04-15
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
相关资源
最近更新 更多