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

IIS部署Django项目无法识别新增py文件导入模块报错

IIS部署Django无法识别新增py文件的解决方案

这个问题和文件权限无关,核心原因是IIS通过FastCGI托管Python进程时,默认会长期驻留后台进程不退出,进程启动时完成模块扫描加载后,后续新增的项目文件不会被自动识别,同时Python字节码缓存未同步更新,就会触发No module named 'app.test'报错,本地开发用runserver自带热重载所以不会出现这个问题。

按以下顺序操作即可解决

  • 回收对应站点的应用程序池
    打开IIS管理器,找到当前Django站点绑定的应用程序池,右键选择「回收」即可杀掉所有旧的驻留Python进程,注意不要只重启站点,单纯重启站点不会杀掉已运行的FastCGI进程。
  • 全量清理Python缓存
    删除项目目录下所有__pycache__文件夹,以及所有后缀为.pyc的字节码缓存文件,避免旧缓存干扰新模块加载。
  • 核对服务器文件状态
    首先确认服务器上app目录下确实存在test.py文件,关闭Windows资源管理器的「隐藏已知文件类型的扩展名」选项,避免文件实际为test.py.txt这类命名错误;其次右键test.py打开属性-安全面板,确认IIS_IUSRS、IUSR两个账号拥有读取、读取&执行权限,和同目录下oldFile.py的权限配置完全一致,排除新建文件未正确继承父目录权限的情况。
  • 调整FastCGI进程回收配置(可选,避免后续新增文件再出问题)
    在IIS管理器中找到对应站点的FastCGI设置,选中你使用的Python解释器条目,编辑设置将「实例最大请求数」从默认的2000000调整为50-200区间,让FastCGI进程定期自动回收,避免进程长期驻留无法加载新文件,修改后再次回收应用程序池生效。

验证方法

在服务器上打开命令提示符,进入项目根目录执行以下命令,确认模块本身可以被Python正常加载:

python -c "import sys; sys.path.insert(0, r'你的djangoRest项目的绝对路径'); import app.test; print('模块加载正常')"

如果命令执行成功但IIS访问仍报错,检查Django的settings.py中DEBUG是否为False,有没有配置错误的模块导入白名单即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:24:19