Я установил apache 2.4 на ubuntu 14.04 с 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
Что не так?
Я удивлен, что вы даже заставили pyenv работать каким-либо образом, поскольку он не устанавливает Python с общей библиотекой, что делает его бесполезным там, где Python встроен, например, с mod_wsgi.
Как автор mod_wsgi я бы рекомендовал не использовать pyvenv.
Возможно, происходит то, что из-за проблем с pyvenv компоновщик при сборке mod_wsgi взял другую разделяемую библиотеку для Python и использовал ее. В качестве альтернативы, во время выполнения он выбирает установку Python из другого места, потому что вы не настроили mod_wsgi, чтобы указать ему, какую установку использовать.
Я предлагаю вам проработать:
и проверьте, на что ссылается библиотека Python mod_wsgi и какую установку Python она использует во время выполнения. Это, по крайней мере, подтвердит, что все было скомпилировано / настроено неправильно.