You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境Apache2.4部署Django报init_fs_encoding错误如何解决?

问题解决办法

该错误核心是mod_wsgi加载Python运行环境时无法识别核心标准库路径,找不到encodings核心模块,可按以下步骤修复:

  • 检查mod_wsgi版本匹配
    Windows环境下mod_wsgi必须和你的Python版本、Apache位数、VC编译版本完全一致,例如使用Python3.10 64位、Apache2.4 64位时,必须安装对应Python3.10、64位编译的mod_wsgi版本,版本不匹配是该类报错的高发原因。

  • 配置Apache全局Python路径
    在Apache的httpd.conf配置文件中,找到加载mod_wsgi.so的代码行,在下方添加如下配置,指向你的虚拟环境根目录:

WSGIPythonHome "C:/Users/myuser/Desktop/app/appEnv"

同时给Windows系统添加全局环境变量:

  • 变量名PYTHONHOME,值为C:\Users\myuser\Desktop\app\appEnv
  • 变量名PYTHONPATH,值为C:\Users\myuser\Desktop\app\appEnv\Lib;C:\Users\myuser\Desktop\app\appEnv\Lib\site-packages
    添加完成后重启Apache服务,若使用Windows服务运行Apache需重启系统确保环境变量生效。
  • 修正wsgi_windows.py配置
    你当前的路径插入逻辑优先级不足,且存在重复配置,修改文件内容如下:
import os
import sys
import site

# 优先加载虚拟环境的site-packages
site.addsitedir('C:/Users/myuser/Desktop/app/appEnv/Lib/site-packages')

# 将项目路径插到sys.path最前面,避免优先级低于系统路径
sys.path.insert(0, 'C:/Users/myuser/Desktop/app')
sys.path.insert(1, 'C:/Users/myuser/Desktop/app/appEnv/Lib')
sys.path.insert(2, 'C:/Users/myuser/Desktop/app/appEnv/Lib/site-packages')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
  • 修正虚拟主机配置的路径匹配问题
    你当前的虚拟主机配置中,wsgi文件存放路径和权限放行路径不匹配,修改对应块如下:
<VirtualHost *:80>
    ServerName localhost 
    WSGIPassAuthorization On
    ErrorLog "C:/Users/myuser/Desktop/app.error.log"
    CustomLog "C:/Users/myuser/Desktop/app.access.log"  combined
    WSGIScriptAlias /  "C:/Users/myuser/Desktop/app/wsgi_windows.py"
    # 路径修改为wsgi文件所在的目录
    <Directory "C:/Users/myuser/Desktop/app">
        <Files wsgi_windows.py>
            Require all granted
        </Files>
    </Directory>

    Alias /static "C:/Users/myuser/Desktop/app/static"
    <Directory "C:/Users/myuser/Desktop/app/static">
        Require all granted
    </Directory>  
</VirtualHost>
  • 权限检查
    给Apache运行用户(默认服务运行时为SYSTEM用户)开放项目目录、虚拟环境目录的读取、执行权限,避免文件访问被拦截。

配置全部修改完成后,可先在cmd中进入Apache的bin目录,执行httpd.exe直接启动程序,查看控制台输出是否有报错,无报错再访问站点验证功能。

内容的提问来源于stack exchange,提问作者Sean Brittian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:06:03