В довольно консервативной системе (RHEL) я решил сделать решающий шаг, узнать о virtualenv и перенести мое wsgi-приложение со значения по умолчанию системы от 2.7 до 3.6.Существует множество версий Python3:
$ yum search python3 | egrep '^python3[^-]+\.'
python34.x86_64 : Version 3 of the Python programming language aka Python 3000
python34u.x86_64 : Version 3 of the Python programming language aka Python 3000
python35u.x86_64 : Version 3.5 of the Python programming language
python36.x86_64 : Interpreter of the Python programming language
python36u.x86_64 : Interpreter of the Python programming language
$
В итоге я установил python36 в virtualenv.В настройках тестирования все работает, поэтому пришло время установить соответствующий модуль apache.Однако virtualenv и mod_wsgi кажутся взаимоисключающими, поскольку они не имеют общей версии в python3:
$ yum search python | egrep '(virtualenv|mod_wsgi)'
python-virtualenv.noarch : Tool to create isolated Python environments
python3-virtualenv-doc.noarch : Documentation for python virtualenv
python34-virtualenv.noarch : Documentation for python virtualenv
python35u-mod_wsgi.x86_64 : A WSGI interface for Python web applications in
python35u-mod_wsgi-debuginfo.x86_64 : Debug information for package
: python35u-mod_wsgi
python36-virtualenv.noarch : Documentation for python virtualenv
python36u-mod_wsgi.x86_64 : A WSGI interface for Python web applications in
python36u-mod_wsgi-debuginfo.x86_64 : Debug information for package
: python36u-mod_wsgi
mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
python-virtualenv-api.noarch : An API for virtualenv/pip
python-virtualenv-clone.noarch : Script to clone virtualenvs
python-virtualenvwrapper.noarch : Enhancements to virtualenv
$
Обратите внимание, что пакеты mod_wsgi имеют номера версий "35u" и "36u", тогда как virtualenv входит только в "34 "и" 36 ".Когда я пытаюсь установить любое из них одновременно, я получаю скрины сообщений об ошибках конфликта.
Конечно, python27 (системная версия по умолчанию) все еще существует, поэтому я попытался создать среду python36 с использованием virtualenv 27, но этотоже терпит неудачу:
$ virtualenv -p python3.6 env
Running virtualenv with interpreter /usr/bin/python3.6
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/virtualenv.py", line 8, in <module>
import base64
File "/usr/lib64/python3.6/base64.py", line 9, in <module>
import re
File "/usr/lib64/python3.6/re.py", line 142, in <module>
class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'
$
RHEL - это то, с чем мне приходится жить, потому что это то, что работает на некоторых виртуальных машинах во внутренней сети моей компании.Дома я запускаю Debian, без проблем.Также я не могу использовать другой веб-сервер, потому что у других людей есть другие приложения (PHP) на этом сервере.