You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

部署Django应用至Heroku遇PythonPath问题:找不到UsefulFunctions模块

解决Django部署Heroku时的ModuleNotFoundError(找不到UsefulFunctions模块)

刚第一次部署Django到Heroku就碰到这个问题?别慌,这个ModuleNotFoundError在新手部署里太常见了,咱们一步步排查解决:

1. 先确认你的模块是合法的Python包

Python要识别一个目录为可导入的模块,必须要有__init__.py文件——哪怕是空的也行!你去看看UsefulFunctions目录里有没有这个文件?如果没有,赶紧创建一个,然后重新commit推送。

另外还要注意大小写问题:Heroku跑的是Linux系统,文件名大小写是严格区分的。如果你本地是Windows(大小写不敏感),可能本地代码里写import UsefulFunctions,但实际目录名是usefulfunctions,到了Heroku就会找不到。核对一下目录名和代码里的导入名完全一致。

2. 检查Django配置里的模块引用

如果UsefulFunctions是一个Django应用,那你得确保它已经加到settings.pyINSTALLED_APPS里了:

INSTALLED_APPS = [
    # 其他默认应用比如django.contrib.admin之类的
    'UsefulFunctions',  # 这里要和你的模块名完全匹配
]

如果它只是个普通的工具模块(不是Django app),那得让Python能找到它的位置。可以在settings.py开头加一段代码,把项目根目录加入Python的搜索路径:

import os
import sys
# 把项目根目录添加到sys.path,确保自定义模块能被找到
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

3. 排查Git是否把模块推送到Heroku了

有时候不小心把UsefulFunctions加到.gitignore里了,导致这个目录根本没被传到Heroku上。打开你的.gitignore文件,看看有没有类似UsefulFunctions/的规则,有的话删掉。

然后运行git status看看这个目录是不是处于未追踪状态,如果是的话,执行:

git add UsefulFunctions/
git commit -m "Add UsefulFunctions module"
git push heroku master

4. 去Heroku上直接看文件结构

如果上面几步都没解决,咱们直接去Heroku的服务器上看看实际情况。用Heroku CLI登录后,运行:

heroku run bash

进入shell后,用ls命令查看目录,确认UsefulFunctions目录是不是存在,里面有没有__init__.py。如果不存在,说明就是Git推送的问题,回到第三步仔细检查。

最后补充

如果还是搞不定,把你的项目目录结构贴出来(比如根目录下有哪些文件夹,UsefulFunctions的位置),这样能更快定位问题。

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

火山引擎 最新活动