【发布时间】:2021-09-01 22:35:44
【问题描述】:
我正在尝试让我的 Apache Web 服务器使用 wsgi.py 运行我的 Django 页面。我的虚拟环境位于 /var/www/myapp/myapp_root/myapp。当我激活虚拟环境时,我看到我的用户主目录正在被使用。我尝试了以下 wsgi.py 更改:
"""
WSGI config for trackx project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/
"""
import os,sys
sys.path.append('/home/myuserid/.local/share/virtualenvs/lib/python3.9/site-packages')
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'trackx.settings')
application = get_wsgi_application()
当我尝试启动服务器时 - 它给了我以下重复错误(一遍又一遍):
Python path configuration:
PYTHONHOME = '/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9'
PYTHONPATH = (not set)
program name = 'python3'
isolated = 0
environment = 1
user site = 1
import site = 1
sys._base_executable = '/usr/local/bin/python3'
sys.base_prefix = '/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9'
sys.base_exec_prefix = '/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9'
sys.executable = '/usr/local/bin/python3'
sys.prefix = '/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9'
sys.exec_prefix = '/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9'
sys.path = [
'/home/my-user/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9/lib64/python38.zip',
'/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9/lib64/python3.8',
'/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9/lib64/python3.8/lib-dynload',
]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'
Current thread 0x00007f52bfd07880 (most recent call first):
<no Python frame>
我在 http.conf 文件中的 WSGI 设置如下所示...
WSGIPythonHome /var/www/myapp/myapp_root/venv
WSGIPythonPath /var/www/myapp/myapp_root/venv/lib/python3.9/site-packages
WSGIDaemonProcess myapp python-home=/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias / /var/www/myapp/myapp_root/myapp/wsgi.py
<Directory /var/www/myapp/myapp_root/myapp>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
任何人都会遇到这个错误 - 任何想法都会很棒。尝试将一些设置更改为我的实际 .local http配置中的目录,但这似乎会产生权限错误,然后我仍然得到相同的重复错误结果。
【问题讨论】:
-
我看到了 - 如果我要尝试取消设置环境变量,我会在哪里这样做。 Apache 正在运行 wsgi.py,我可以在 wsgi.py 代码中取消设置吗?
标签: python django virtualenv