Apache部署Django时出现init_fs_encoding获取Python文件系统编码失败错误
问题排查解决步骤
该错误为Apache子进程无法正确读取Python核心库路径导致,encodings是Python自带核心模块,找不到100%是Python运行环境路径配置或权限问题,按以下顺序排查即可:
- 首先修正
httpd.conf里的Python路径配置,删除路径末尾的斜杠,修改后对应配置段如下:
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>
修改后保存配置,先不要急着重启服务,走下一步。
- 修改Apache服务的运行账户:打开Windows服务管理器(运行输入
services.msc回车),找到Apache2.4服务,右键选择「属性」-「登录」选项卡,勾选「此账户」,填入你当前正常使用Python的Windows账户名和密码,点击确定保存。默认Local System账户经常出现权限不足无法读取Python目录的问题。 - 添加系统级环境变量:打开系统环境变量配置页,在「系统变量」区域新增两个变量:
- 变量名
PYTHONHOME,变量值c:\python39 - 变量名
PYTHONPATH,变量值c:\python39\Lib;c:\python39\DLLs;C:\pd_videowebapp
配置完成后重启电脑,确保环境变量全局生效。
- 变量名
- 验证权限配置:找到
c:/python39文件夹,右键选择「属性」-「安全」,给当前Apache运行的账户添加「读取和执行」、「列出文件夹内容」、「读取」权限,避免权限拦截。 - 若以上操作后仍报错,重新安装匹配版本的mod_wsgi:打开命令提示符执行
pip uninstall mod_wsgi -y && pip install mod_wsgi,安装完成后重新核对LoadModule的路径是否正确,再重启Apache服务。
内容的提问来源于stack exchange,提问作者xralf
相关产品推荐
相关产品推荐

