Heroku / python无法检测到set buildpack

时间:2016-09-02 01:02:12

标签: python django git heroku deployment

我是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

如果你们能提供帮助,我将非常感激。我现在真的很沮丧......

3 个答案:

答案 0 :(得分:30)

您需要添加一个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

答案 1 :(得分:1)

您只需要在主应用程序文件夹中添加 requirements.txt 。它包含我们正在处理的软件包,如django,flask。

答案 2 :(得分:1)

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

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

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

  3. 现在提交更改。

    git add。

    git commit -m“已添加需求”

    git push heroku master

在这里,我要抓住的是:我这样做是在不添加任何模块的情况下完成的,因为pip还可以自动从本地代码库安装依赖项。当我检查我的require.txt文件时运行命令后,已经有自动添加的模块。

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

  1. 仅当您遇到与我的情况类似的错误时,才出现关于conda ==的错误。找不到版本。由于模块是根据我的本地代码库自动添加的,因此Conda版本安装在我的本地计算机上,这就是为什么将其自动添加到我的require.txt文件中的原因。您所需要做的就是将其从requirements.txt文件中删除。

  2. 再次提交更改。

这种想法可能会帮助一些遇到类似错误的人。