mod_wsgi 继续使用系统 python

mod_wsgi 继续使用系统 python

我在 ubuntu 14.04 上安装了 apache 2.4,其中 mod_wsgi 4.4 来自源代码,并且 pyenv 使用 python 2.7.9。我设置了 apache 配置以与 pyenv 一起使用。运行 web2py 应用程序时出现以下错误:

File "/home/ubuntu/.pyenv/versions/w-2.7.9/lib/python2.7/site-packages/boto/https_connection.py", line 131, in connect ca_certs=self.ca_certs)
File "/usr/local/lib/python2.7/ssl.py", line 387, in wrap_socket ciphers=ciphers)
File "/usr/local/lib/python2.7/ssl.py", line 138, in __init__
self._sslobj = _ssl.sslwrap(self._sock, server_side,
AttributeError: 'module' object has no attribute 'sslwrap'

我不知道为什么,但突然间你看到它停止使用 pyenv python 并跳转到/usr/local/lib/python2.7/ssl.py并使用它。

问题不在于 ssl sslwreap 函数,而是 mod_wsgi 切换到系统 python(/usr/local/lib/python2.7/ssl.py),而不是 pyenv

发生什么问题了?

答案1

我很惊讶你甚至让 pyenv 以任何方式工作,因为它没有安装带有共享库的 Python,这使得它在嵌入 Python 的地方(例如 mod_wsgi)几乎毫无用处。

作为 mod_wsgi 的作者,我建议不要使用 pyvenv。

可能发生的情况是,由于 pyvenv 的问题,链接器在构建 mod_wsgi 时为 Python 选择了不同的共享库并使用了该库。或者,在运行时,它会从其他位置选择 Python 安装,因为您没有配置 mod_wsgi 来告诉它要使用哪个安装。

我建议你做以下工作:

并检查 mod_wsgi 链接到哪个 Python 库以及运行时使用哪个 Python 安装。这至少可以确认是否编译/设置不正确。

相关内容