Я установил Django 2.0.5 на сервер CentOS 7 с Python 3.7.0, следуя инструкциям DigitalOcean.
После добавления файла conf я получил следующую ошибку
mod_wsgi (pid=21374): Target WSGI script '/home/user/myproject/myproject/wsgi.py' cannot be loaded as Python module.
mod_wsgi (pid=21374): Exception occurred processing WSGI script '/home/user/myproject/myproject/wsgi.py'.
Traceback (most recent call last):
File "/home/user/myproject/myproject/wsgi.py", line 18, in <module>
from django.core.wsgi import get_wsgi_application
File "/home/user/myproject_env/lib/python3.7/site-packages/django/__init__.py", line 1, in <module>
from django.utils.version import get_version
File "/home/user/myproject_env/lib/python3.7/site-packages/django/utils/version.py", line 61, in <module>
@functools.lru_cache()
AttributeError: 'module' object has no attribute 'lru_cache'
Это указывает на файл wsgi.py, выполняемый Python 2.7.5, который является версией Python по умолчанию для моего сервера.
Чтобы подтвердить это, я добавил версию и $PYTHONPATH
в error_log из wsgi.py.
ERROR:root:Python Version: 2.7.5
ERROR:root:['/home/user/myproject', '/home/user/myproject_env/bin/python3.7',
'/home/user/myproject_env/lib/python3.7/site-packages', '/usr/lib64/python27.zip',
'/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk',
'/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload',
'/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages']
Это подтверждает, что он выполняет Python 2.7.5 вместо Python 3.7.0.
Как я могу изменить путь Django Python для выполнения Python 3
из virtualenv
?
ИЗМЕНИТЬ:
Вот мой файл django.conf:
Alias /static /home/user/myproject/static
<Directory /home/user/myproject/static>
Require all granted
</Directory>
<Directory /home/user/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproject python-path=/home/user/myproject:/home/user/myproject_env/lib/python3.7/site-packages
WSGIProcessGroup myproject
WSGIScriptAlias / /home/user/myproject/myproject/wsgi.py
/home/user/myproject_env/bin/python3
. - person hoefling   schedule 11.08.2018WSGIPythonPath
, а оWSGIPythonExecutable
. Пожалуйста, внимательно прочитайте ответ на связанный вопрос. - person hoefling   schedule 11.08.2018WSGIDaemonProcess myproject python-path=/home/user/myproject:/home/user/myproject_env/lib/python3.7/site-packages
. добавлениеWSGIPythonExecutable
дает мне следующую ошибку во время перезапуска сервераJob for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
@hoefling - person Rafayet Ullah   schedule 11.08.2018mod_wsgi
вы используете? - person hoefling   schedule 11.08.2018mod_wsgi>2
свойство было переименовано вWSGIPythonHome
. - person hoefling   schedule 11.08.2018