Heroku+Python环境下如何导入本地自定义函数?
解决Heroku上Python本地模块导入问题
嘿,我来帮你理清这个问题!首先得纠正一个误解:requirements.txt是用来声明第三方依赖库的,你自己写的本地Python文件完全不需要在这里面添加,这不是自定义依赖的范畴~
下面是正确的操作步骤和排查要点:
一、正确的本地模块导入方式
你的from fetchWelcome import fetchWelcome写法本身是没问题的,只要满足以下几个前提:
- 确保
fetchWelcome.py和main.py处于同一个目录下,而且部署到Heroku时,这个目录结构在Git仓库里是完全一致的(别把fetchWelcome.py误放到子文件夹里) - 检查
fetchWelcome.py里的函数名拼写,Python是大小写敏感的,要保证函数确实是fetchWelcome(注意首字母大写的地方要严格匹配) - 确认
fetchWelcome.py本身没有依赖其他未声明的第三方库——如果它里面用了比如import requests但你requirements.txt没加requests,那报错会被误以为是导入模块的问题,得把这类第三方库正确加到requirements.txt里
二、排查Heroku部署时的常见坑
如果还是报错,大概率是部署环节的问题,你可以从这几点检查:
- 查看你的
.gitignore文件,有没有不小心把fetchWelcome.py排除在外了?如果这个文件没被提交到Git,Heroku服务器上就找不到它,自然会报模块找不到的错误 - 用
heroku logs --tail命令查看Heroku的实时日志,找到具体的错误信息(比如是ModuleNotFoundError还是某个依赖缺失),这能帮你精准定位问题
三、简单验证示例
给你一个最小可运行的示例,确保逻辑没问题:
fetchWelcome.py的内容:def fetchWelcome(): return "Hey there! Welcome to our chat bot 🎉"main.py的内容:from fetchWelcome import fetchWelcome # 测试调用 if __name__ == "__main__": print(fetchWelcome())requirements.txt里只需要放你实际用到的第三方库,比如如果用了Flask就写:flask==2.3.3
这样本地运行没问题,把所有文件提交到Git后部署到Heroku,就不会出现导入错误啦!
内容的提问来源于stack exchange,提问作者Kartikeya Rana
相关产品推荐
相关产品推荐

