init_fs_encoding:获取文件系统编码的 Python 编解码器失败

Posted

技术标签:

【中文标题】init_fs_encoding:获取文件系统编码的 Python 编解码器失败【英文标题】:init_fs_encoding: failed to get the Python codec of the filesystem encoding 【发布时间】:2021-12-01 15:47:21 【问题描述】:

我在 apache 上运行 Django 网站。

这是我的httpd.conf 文件的尾部。

ServerName 127.0.0.1:8080


# Django Project
LoadFile "c:/python39/python39.dll"
LoadModule wsgi_module "c:/python39/lib/site-packages/mod_wsgi/server/mod_wsgi.cp39-win_amd64.pyd"
WSGIPythonHome "c:/python39/"
WSGIScriptAlias / "C:/pd_videowebapp/mysite/wsgi.py"
WSGIPythonPath "C:/pd_videowebapp/"

<Directory "C:/pd_videowebapp/mysite/">
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

Alias /static "C:/pd_videowebapp/static/"
<Directory "C:/pd_videowebapp/static/">
    Require all granted
</Directory>

这是error.log文件的尾部:

The 'Apache2.4' service is restarting.
Starting the 'Apache2.4' service
The 'Apache2.4' service is running.
pm_winnt:notice] [pid 4472:tid 420] AH00455: Apache/2.4.51 (Win64) mod_wsgi/4.9.0 Python/3.9 configured -- resuming normal operations
[Wed Oct 13 08:31:28.026005 2021] [mpm_winnt:notice] [pid 4472:tid 420] AH00456: Apache Lounge VS16 Server built: Oct  7 2021 16:27:02
[Wed Oct 13 08:31:28.026005 2021] [core:notice] [pid 4472:tid 420] AH00094: Command line: 'C:\\Apache24\\bin\\httpd.exe -d C:/Apache24'
[Wed Oct 13 08:31:28.041641 2021] [mpm_winnt:notice] [pid 4472:tid 420] AH00418: Parent: Created child process 2676
Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = (not set)
  program name = 'python'
  isolated = 0
  environment = 1
  user site = 1
  import site = 1
  sys._base_executable = 'C:\\Apache24\\bin\\httpd.exe'
  sys.base_prefix = 'C:\\Python39'
  sys.base_exec_prefix = 'C:\\Python39'
  sys.platlibdir = 'lib'
  sys.executable = 'C:\\Apache24\\bin\\httpd.exe'
  sys.prefix = 'C:\\Python39'
  sys.exec_prefix = 'C:\\Python39'
  sys.path = [
    'C:\\Python39\\python39.zip',
    '.\\DLLs',
    '.\\lib',
    'C:\\Apache24\\bin',
  ]
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 0x00001bd8 (most recent call first):
<no Python frame>
[Wed Oct 13 08:31:28.385413 2021] [mpm_winnt:crit] [pid 4472:tid 420] AH00419: master_main: create child process failed. Exiting.

【问题讨论】:

你找到解决办法了吗? @isifzade 我在虚拟机中安装了 Ubuntu。 【参考方案1】:

对于 Windows 10 用户:

    按工具栏上的 Windows 徽标。 输入并打开Edit the system environment variables。 在Advance 选项卡中按Environment Variables 按钮。 对于System variables,请按New 按钮。 Variable name 将是 PYTHONHOME,Variable value 将是 python.exe 所在的路径(即 c:/users/administrator/anaconda3/envs/my_env_name)。然后按OK。 再次为System variablesNew 按钮。 Variable name 将是 PYTHONPATH,Variable value 将是 site-packages 文件夹的路径(即 C:/Users/Administrator/anaconda3/envs/my_env_name/Lib/site-packages)。然后按OK

【讨论】:

我接受这个答案,因为我现在无法测试它。服务器已经在 Ubuntu 上运行。

以上是关于init_fs_encoding:获取文件系统编码的 Python 编解码器失败的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么获得文件编码格式

Java如何获取平台(操作系统)的默认编码

在C中获取文件系统创建日期

python3读文件编码错误怎么办

pandas读取csv文件发生编码(encoding)错误:获取文件编码格式之后再读取文件

使用chardet模块获取文件的编码格式,进而正确的读取文件内容