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

部署Python应用至Heroku时遇‘npm: command not found’错误求助

解决Heroku部署时「Multiple default buildpacks」的问题

嗨,咱们来搞定你部署时碰到的这个问题——Heroku抛出这个警告/错误,本质是它没法自动判断该用哪个构建包(buildpack)来编译你的应用。通常是因为你的代码仓库里同时存在多个不同语言/框架的特征配置文件,让Heroku犯了难。下面给你几个实用的解决办法:

方法1:手动指定目标buildpack

这是最直接的解决方案,明确告诉Heroku你要使用的构建包。比如:

  • 如果是Node.js应用,运行:
    heroku buildpacks:set heroku/nodejs
    
  • 如果是Python应用,运行:
    heroku buildpacks:set heroku/python
    

其他语言的话,替换成对应的官方buildpack名称即可,比如Ruby用heroku/ruby,Java用heroku/java。

设置完成后,重新推送代码就能正常构建了:

git push heroku master

方法2:移除多余的特征文件

如果你的仓库里不小心混进了其他语言的配置文件(比如本来是Node.js项目却有requirements.txt),直接删掉这些多余文件,再提交到git:

git rm 多余的文件名
git commit -m "移除多余的配置文件,避免buildpack识别冲突"
git push heroku master

这样Heroku就能根据剩下的特征文件自动识别正确的buildpack了。

方法3:配置多buildpack(如果确实需要)

如果你的应用真的需要同时使用多个buildpack(比如同时依赖Node.js和Python),可以添加多个buildpack并指定执行顺序:

# 添加第一个buildpack
heroku buildpacks:add heroku/nodejs
# 添加第二个buildpack
heroku buildpacks:add heroku/python
# 查看当前buildpack顺序
heroku buildpacks

Heroku会按照你添加的顺序依次执行构建流程。

小提示:了解Heroku的自动识别逻辑

Heroku是通过仓库根目录的特征文件来判断buildpack的,常见的对应关系:

  • Node.js → package.json
  • Python → requirements.txt 或 Pipfile
  • Ruby → Gemfile
  • Java → pom.xml 或 build.gradle
    确保你要使用的语言的特征文件存在,并且没有被.gitignore忽略哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:36:59