heroku:此应用无法检测到默认语言

时间:2016-10-05 12:25:50

标签: python heroku

第一次使用Heroku。试图推动。我已经运行了命令:

heroku create --buildpack heroku/python

并显示

$ heroku create --buildpack heroku/python
Creating app... done, glacial-reef-7599
Setting buildpack to heroku/python... done
https://glacial-reef-7599.herokuapp.com/ | https://git.heroku.com/glacial-reef-7599.git

堆栈追踪:

$ git push heroku master
Counting objects: 129, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (124/124), done.
Writing objects: 100% (129/129), 69.06 KiB | 0 bytes/s, done.
Total 129 (delta 22), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote:  !     No default language could be detected for this app.
remote:                         HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
remote:                         See https://devcenter.heroku.com/articles/buildpacks
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to pure-badlands-9125.
remote:
To https://git.heroku.com/pure-badlands-9125.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/pure-badlands-9125.git'

我必须遗漏一些东西。

我在根目录中添加了requirements.txt。它看起来像这样:

.git
.idea
projectapp
projectname
rango
db.sqlite3
manage.py
populate_rango.py
requirements.txt

13 个答案:

答案 0 :(得分:4)

对于将来的引用,您必须确保将带有代码的分支推送到heroku master

如果您从master分支分支出来,并且所有代码都位于develop上,则将其推送到heroku主节点。

所以代替:

git push heroku master

您将执行以下操作:

git push heroku develop:master

此问题对此How to push different local Git branches to Heroku/master

具有重要的详细信息

答案 1 :(得分:3)

您需要创建一个runtime.txt文件。在命令行上,在您的requirements.txt文件所在的文件夹中,输入echo "python-3.5.1" > runtime.txt。当然,请确保使用您使用的任何版本的Python切换3.5.1。

答案 2 :(得分:2)

使用Docker进行部署时,请确保将应用程序的堆栈设置为container,如docs所示:

heroku stack:set container

答案 3 :(得分:1)

Heroku的Python支持扩展到Python 2.x和Python 3.x系列的最新稳定版本。 今天,这种支持延伸到这些特定的运行时:

  • python-2.7.13
  • 蟒-3.6.1

尝试在runtime.txt中更改python版本

答案 4 :(得分:1)

我无法记住我是如何解决此问题但在发布此问题后查看我文件中的Date Modified我创建了两个文件:

runtime.txt(感谢 rurp ),其中包含:

python-3.5.2

Procfile包含:

web: gunicorn projectname.wsgi --log-file -

这是一个Django项目,而projectname.wsgi会导致位于

wsgi.py

projectname/wsgi.py

包含:

import os
import signal

import sys
import traceback

import time
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projectname.settings")

application = get_wsgi_application()
application = DjangoWhiteNoise(application)

答案 5 :(得分:1)

我正在运行一个 django 项目,但对我来说,上述解决方案都没有奏效。所以最后我放弃并转到错误中提到的路径,它清楚地说明heroku需要以下任一文件来检测django项目:

  1. requirements.txt
  2. setup.py
  3. Pipfile

我通过在项目的根目录中复制 pip freeze 的内容创建了一个 requirements.txt 文件,并且它工作正常。

答案 6 :(得分:0)

在根文件夹中创建 Pipfile 文件,并添加python version和应用程序所需的包。 check sample file here

[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true


[packages]

django = "*"
gunicorn = "*"
django-heroku = "*"


[requires]

python_version = "3.6"

同时检查Configuring Django Apps for Heroku

答案 7 :(得分:0)

即使包含runtime.txt,我也遇到了同样的问题。有效的是包含requirements.txt

答案 8 :(得分:0)

转到heroku仪表板>进入应用程序>单击设置>向下滚动并单击添加构建包>就我而言,我选择了heroku / nodejs

答案 9 :(得分:0)

要注意的另一件事是在将更改推送到Heroku之前,将更改实际提交到git repo。 您可能在本地设置了requirements.txt,但如果未将其提交给您的存储库,git push heroku master将无法找到它。

答案 10 :(得分:0)

如果您尝试了上述一些答案,但问题仍然存在;

确保您git在正确的目录中“提交”。

例如,如果您的文件结构如下:

/src
    /...
    manage.py
.gitignore
Pipfile/requirements.txt
Pipfile.lock
Procfile
runtime.txt

确保您要从根目录git添加,提交,推送等。由于我们大部分工作在src/main_app_directory/中,因此我们倾向于忘记在提交之前将目录更改回root。

答案 11 :(得分:0)

就我而言,我在一个git子文件夹中。当我查看根.git文件夹时-该项目确实没有package.json文件-因此heroku无法识别webpack

答案 12 :(得分:0)

今天遇到这个问题并发布我已经将我的 requirements.txt 命名为 requirements.txt.txt(当它已经是一个文本文件时,我实际上将文件命名为 .txt 扩展名),我也有一个 {{1 }} 文件,内容为 runtime.txt

重命名 requirements.txt 文件正确解决了我的问题。

我的根文件夹中有 3 个文件:code.py、requirements.txt 和 runtime.txt