升级到 Python 2.7.10:无法将目标 WSGI 脚本加载为 Python 模块

Upgrade to Python 2.7.10: Target WSGI script cannot be loaded as Python module

当我使用 anaconda Python 从 2.7.9 升级到 2.7.10 时,我在我的 apache2 日志中收到以下错误并且我的网站不再工作。

mod_wsgi (pid=608): Target WSGI script '/www/wsgi_scripts/django_myproject.wsgi' cannot be loaded as Python module.
 Exception occurred processing WSGI script '/www/wsgi_scripts/django_myproject.wsgi'.
Traceback (most recent call last):
  File "/www/wsgi_scripts/django_myproject.wsgi", line 8, in <module>
    import django.core.handlers.wsgi
  File "/Users/xnx/anaconda/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 6, in <module>
    from io import BytesIO
  File "/Users/xnx/anaconda/lib/python2.7/io.py", line 51, in <module>
    import _io
ImportError: dlopen(/Users/xnx/anaconda/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyErr_ReplaceException
  Referenced from: /Users/xnx/anaconda/lib/python2.7/lib-dynload/_io.so
  Expected in: dynamic lookup

我认为这是软件包库版本中的某种不匹配,但有人知道是哪一个吗?

我怀疑这是 Anaconda 的问题,因为我刚刚遇到了同样的问题。我在这里报告了一个问题:https://github.com/conda/conda/issues/1367

更新:

conda 的家伙现在已经发布了一个固定的 virtualenv 包,不再有这个问题。

仔细检查 PYTHONPATH 是否正确(不要在启动文件的任何地方覆盖它)。

否则,您可以考虑将 Python 从 2.7.10 降级到 2.7.9。

例如(如 here 中所建议):

conda install python=2.7.9

尝试:

brew switch python 2.7.9

因为这可能是 2.7.10 的一些特殊问题。

或者使用 Python 3.x。