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

Django的INSTALLED_APPS无法识别已安装的自定义PyPi包是什么原因

PyPI安装自定义DRF包后出现ModuleNotFoundError的排查方案

以下是优先级从高到低的排查方向:

  • 包名与导入名不匹配:这是最常见的问题。PyPI上的分发包名(你pip install的名称,比如drf-custom-tools)和实际可导入的模块名可以完全不同,很多开发者会把分发包名用横杠命名,实际模块名用下划线命名(比如实际导入名是drf_custom_tools)。你需要确认site-packages下的文件夹名称,INSTALLED_APPS里必须填这个文件夹的准确名称,而不是你上传到PyPI的分发包名。
  • setup.py/pyproject.toml的包路径配置错误:
    1. 检查是否正确声明了要打包的模块:如果你用setuptools,需要确认是否调用了find_packages(),或者手动填写的packages列表包含了你的DRF应用模块
    2. 如果你的应用代码放在src/目录下,必须额外配置package_dir={"": "src"},否则打包后会把src目录直接打包到分发包中,安装后模块路径会变成src.你的应用名而不是直接的应用名
  • 缺失__init__.py文件:Django识别INSTALLED_APPS中的应用时,要求应用根目录下必须存在__init__.py文件(可以是空文件),如果你打包时遗漏了这个文件,即使文件夹存在也会被识别为普通目录而非Python模块。
  • 打包命令错误导致构建产物异常:你第三步的构建命令拼写错误,正确命令是python setup.py bdist_wheel sdist,你误写为sdit,可能导致wheel包的结构异常。你可以本地解压生成的.whl文件,直接检查内部的目录结构是否符合预期。
  • 大小写或拼写错误:类Unix系统(Linux、macOS)的文件系统是大小写敏感的,如果你本地Windows开发时写的是MyDrfApp,实际打包的模块名是mydrfapp,大小写不匹配就会报错。另外也需要确认INSTALLED_APPS中填写的名称没有拼写错字符。
  • 虚拟环境冲突:确认你安装包用的虚拟环境,和运行Django项目用的是同一个虚拟环境,避免安装到全局Python环境而项目用的是虚拟环境导致找不到包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 12:24:11