web-dev-qa-db-ja.com

Heroku / pythonはセットビルドパックの検出に失敗しました

私は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

皆さんの力になれていただければ幸いです。今本当に落ち込んでいます...

14
user4754843

アプリケーションの実行に必要なすべてのモジュールを含む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をコミットすることを忘れないでください

32
Harrison

上記の問題を解決できる手順を次に示します。

  1. Appフォルダーにrequirements.txtファイルを作成します。

  2. 同じフォルダーからコマンドpip freeze> requirements.txtを実行します。

  3. 変更をコミットします。

    git add。

    git commit -m「追加された要件」

    git push herokuマスター

これが問題です。私の場合:pipはローカルコードベースから依存関係を自動的にインストールすることもできるため、モジュールを追加せずにそれを行いました。 requirements.txtファイルを確認したときにコマンドを実行した後、モジュールが既に自動的に追加されていました。

注:これがあなたに起こらなかった場合は、ハリソンが答えで言ったように手動で行うことができます。

  1. この手順は、私の場合と同様のエラーが発生した場合にのみ発生します。conda==バージョンに関するエラーが発生しました。バージョンが見つかりません。モジュールはローカルのコードベースに基づいて自動的に追加されたので、Condaバージョンがローカルマシンにインストールされているため、requirement.txtファイルに自動的に追加されました。あなたがしなければならないすべてはrequirements.txtファイルからそれを取り除くことです。

  2. 変更を再度コミットします。

同様のエラーに直面したあなたの一部を助けるかもしれないと思った。

1
Appy Sharma

requirements.txtをメインアプリケーションフォルダーに追加するだけです。これには、Django、フラスコ。

1
shubham kapoor