mod_wsgi继续使用系统python

我在ubuntu 14.04上安装了apache 2.4,使用了源代码mod_wsgi 4.4和pyenv来使用python 2.7.9。 我设置了Apacheconfiguration来使用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

怎么了?

我很惊讶你甚至让pyenv以任何方式工作,因为它不会将Python与共享库一起安装,这使得在Python被embedded的地方(如mod_wsgi)无用。

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

可能发生的事情是,由于pyvenv的问题,构buildmod_wsgi时,链接器为Pythonselect了一个不同的共享库并使用它。 或者,在运行时,它将从不同的位置获取Python安装,因为您没有configurationmod_wsgi来告诉它要使用哪个安装。

我build议你通过以下工作:

并检查Python库mod_wsgi链接的内容以及它在运行时使用的Python安装。 这至less会证实事情是否没有被编译/设置正确。