Heroku/python 无法检测到 set buildpack

Posted

技术标签:

【中文标题】Heroku/python 无法检测到 set buildpack【英文标题】:Heroku/python failed to detect set buildpack 【发布时间】:2017-01-10 00:14:14 【问题描述】:

我是 Django 新手,我创建了一个应用程序并想使用 Heroku 部署它。但是,当我做git push heroku master(我按照 Heroku 的入门)时,我得到了:

Counting objects: 36, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (33/33), done.
Writing objects: 100% (36/36), 19.22 KiB | 0 bytes/s, done.
Total 36 (delta 3), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Failed to detect set buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/python.tgz
remote: More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
remote: 
remote:  !     Push failed
remote: Verifying deploy....
remote: 
remote: !   Push rejected to dry-waters-63931.
remote: 
To https://git.heroku.com/dry-waters-63931.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/dry-waters-63931.git'

我的根目录:

├── assignment
├── household_management (django app)
├── templates
| 
├── db.sqlite3
|
├── manage.py

如果你们能提供帮助,我将不胜感激。我现在真的很郁闷……

【问题讨论】:

【参考方案1】:

您需要添加一个requirements.txt 文件,其中包含运行您的应用程序所需的所有模块。

您可以使用pip freeze > requirements.txt 将所有模块冻结到一个文件中。我只建议您在使用 virtualenv 时这样做,否则它会添加您的所有模块。

无论如何,只需确定您的应用程序需要哪些模块,然后创建一个名为 requirements.txt 的文件并将其放入您的应用程序目录中。

需求文件的语法如下:

package name == version #
package name == version #
package name == version #

注意:指定某个版本号是可选的。

这是一个示例需求文件(取自 this 教程):

Flask==0.11
Jinja2==2.8
gunicorn==19.6.0

别忘了提交你的 requirements.txt

【讨论】:

我得到了完全相同的错误,但也完成了你的建议。 执行“git add .” 并将更改提交到 git!【参考方案2】:

以下是您可以解决上述问题的步骤:

    在您的应用文件夹中创建一个 requirements.txt 文件。

    从同一文件夹运行命令 pip freeze > requirements.txt。

    现在提交您的更改。

    混帐添加。

    git commit -m "添加的要求"

    git push heroku 大师

这里有一个问题,在我的例子中:我没有添加任何模块,因为 pip 还可以自动安装来自本地代码库的依赖项。在我检查我的 requirements.txt 文件时运行命令后,已经自动添加了模块。

注意:如果您没有遇到这种情况,您可以像哈里森在回答中所说的那样手动完成。

    仅当您收到与我的情况类似的错误时,此步骤才会出现有关 conda== version cant be found 的错误。由于模块是根据我的本地代码库自动添加的,因此 Conda 版本安装在我的本地计算机中,这就是它自动添加到我的requirement.txt 文件中的原因。您所要做的就是将其从 requirements.txt 文件中删除。

    再次提交更改。

认为这可能会对遇到类似错误的一些人有所帮助。

【讨论】:

【参考方案3】:

您只需将 requirements.txt 添加到您的主应用程序文件夹。它包含我们处理的包,例如 django 、flask。

【讨论】:

以上是关于Heroku/python 无法检测到 set buildpack的主要内容,如果未能解决你的问题,请参考以下文章

在 Heroku 上部署 React 和 Django

在heroku python应用程序上使用什么端口

Heroku:Python Flask 应用程序 - 自动从 https 重定向到 http

vue 组件内 数组无法正常渲染$set

Chrome开发工具:监视变量不可用(无法在封闭范围内检测到)[重复]

未检测到 Django settings.py