【问题标题】:Get Fatal Python error: Module Not Found: No module named encoding获取致命的 Python 错误:找不到模块:没有名为编码的模块
【发布时间】: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配置中的目录,但这似乎会产生权限错误,然后我仍然得到相同的重复错误结果。

【问题讨论】:

标签: python django virtualenv


【解决方案1】:

我发现我的路径在 wsgi.py 中不正确。

当我添加我的根目录时,设置文件被正确访问并成功加载了wsgi.py。

所以 wsgi.py 现在看起来像:

import os,sys

sys.path.append('/var/www/myapp/myapp_root')
sys.path.append('/usr/local/lib')
sys.path.append('/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9/site-packages/MySQLdb')

sys.path.append('/home/myuser/.local/share/virtualenvs/myapp-nygxcPTP/lib/python3.9/site-packages')

from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')

application = get_wsgi_application()

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 2017-07-19
    • 1970-01-01
    • 2019-08-31
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2018-03-27
    相关资源
    最近更新 更多