我试图在我的虚拟环境中启动我的 uwsgi 服务器,但是在我添加plugin python3选项之后我每次都会收到此错误:
plugin python3
!!! Python Home is not a directory: /home/env3/educ !!! Set PythonHome to /home/env3/educ Python path configuration: PYTHONHOME = '/home/env3/educ' PYTHONPATH = (not set) program name = '/home/env3/educ/bin/python' isolated = 0 environment = 1 user site = 1 import site = 1 sys._base_executable = '/home/env3/educ/bin/python' sys.base_prefix = '/home/env3/educ' sys.base_exec_prefix = '/home/env3/educ' sys.executable = '/home/env3/educ/bin/python' sys.prefix = '/home/env3/educ' sys.exec_prefix = '/home/env3/educ' sys.path = [ '/home/env3/educ/lib/python38.zip', '/home/env3/educ/lib/python3.8', '/home/env3/educ/lib/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 0x00007efe89db8780 (most recent call first): <no Python frame>
我也尝试使用创建新的虚拟环境python3 -m venv env并将项目文件移动到它,但仍然是同样的错误。这是我的 uwsgi.ini 文件:
python3 -m venv env
[uwsgi] base = /home/env3/educ projectname = educ plugins = python3 master = true virtualenv = /home/env3/%(projectname) pythonpath = %(base) env = DJANGO_SETTINGS_MODULE=%(projectname).settings.pro module = %(projectname).wsgi:application socket = /tmp/%(projectname).sock chmod-socket = 666
我使用 Python 3.8.5
我正在尝试使用 Django + uWSGI + nginx + Postgresql。
我看到您的 PYTHONHOME 设置为PYTHONHOME = '/home/env3/educ'. 尝试检查它是否真的存在。
PYTHONHOME = '/home/env3/educ'
我的解决方案是删除PYTHONHOME环境变量。对您来说,它可以就是这样,或者将该变量设置为另一个值。这适用于 Windows,当然也适用于 Linux。如果有人在 Linux 上尝试这个,请在这里发表评论!
PYTHONHOME
CPython 开发人员确认了该解决方案。:
这不是 Python 错误,这是在不需要时设置 PYTHONHOME 和/或 PYTHONPATH 的症状。在几乎所有情况下,您都不需要设置它们中的任何一个; 在 PYTHONHOME 的情况下,设置.
这不是 Python 错误,这是在不需要时设置 PYTHONHOME 和/或 PYTHONPATH 的症状。在几乎所有情况下,您都不需要设置它们中的任何一个;
在 PYTHONHOME 的情况下,设置.