3

Djangoで実行されているHerokuにPythonアプリがあります。アプリが起動し、完全に動作します。プッシュの最初の数行は次のようになります。

(venv)➜  djangoproject git:(development) ✗ git push
Counting objects: 33, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (21/21), done.
Writing objects: 100% (21/21), 1.96 KiB, done.
Total 21 (delta 15), reused 0 (delta 0)

-----> Heroku receiving push
-----> Python/Django app detected
...

dyno(具体的にはCompass)にgemプログラムをインストールする必要があります。

Herokuの手順では、ルートディレクトリに必要なgemを提供しGemfileますGemfile.lock。ただし、これを提供するとすぐに、HerokuはアプリがRubyアプリであると見なします。

(venv)➜  djangoproject git:(development) ✗ git push
Counting objects: 33, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (21/21), done.
Writing objects: 100% (21/21), 1.96 KiB, done.
Total 21 (delta 15), reused 0 (delta 0)

-----> Heroku receiving push
-----> Ruby app detected (NOTE: this is paraphrased)
...

Python /Djangoアプリとしてサイトを実行しているときにrubygemをインストールする方法はありますか?

4

3 に答える 3

2

を使用してPythonビルドパックを明示的に選択してみてくださいheroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-python.git

それでも検出プロセスは実行されますが、他の試行の前または試行する代わりに、明示的に選択したビルドパックが実行されると思います(?)。Pythonアプリケーションがまだインストールされているため、動作するはずです。

config:addを実行した後、Herokuでスラッグを再構築する必要があることに注意してください。これは、現在、gitを介して実際のコード変更をプッシュすることによってのみ実行できます。プッシュする実際の変更がない場合は、を使用して空のgitcommitを作成できます。git commit --allow-empty -m "Empty commit"

--buildpackコマンドラインオプションを使用して新しいプロジェクトを作成することもできます。

于 2012-10-11T23:36:17.927 に答える
1

私は同じ問題に遭遇しました、そしてこれは私のために働きました: https ://github.com/ddollar/heroku-buildpack-multi

使い方:

  1. 「herokuconfig:add BUILDPACK_URL = ...」コマンドを使用して、この「マルチ」ビルドパックを使用することをHerokuに明示的に指示します。
  2. ルートディレクトリに.buildpacksファイルを作成します。このファイルには、使用するさまざまなビルドパックのgitURLが一覧表示されます。Pythonとrubyのビルドパックを使用しました。
  3. Herokuにgitpushして、すべてのビルドパックが使用されるのを確認します

Pythonビルドパックには、追加のカスタム作業を行うために使用できるフックがいくつかあることにも言及する価値があります。bin/pre_compileファイルまたはbin/post_compileファイルを作成する場合、これらのスクリプトは、メインのコンパイル手順の直前/直後にpythonビルドパックによって呼び出されます。したがって、これらのフックを使用して、Rubyまたはその他の依存関係をインストールすることもできます。ただし、IMOでは、Ruby独自のビルドパックにRubyの依存関係をインストールさせる方が簡単です。

于 2013-07-05T16:31:12.570 に答える
1

RubyとPythonの両方の依存関係を構築できるカスタムビルドパックを使用する必要があります。

  1. heroku config:add BUILDPACK_URL=https://github.com/mandest/heroku-buildpack-rubypython
  2. プロジェクトにGemfileを追加します。バンドルインストールをローカルで実行します(作成するには
  3. Gemfile.lockファイル)GemfileとGemfile.lockをherokuにプッシュします

最初にrubyをインストールし、次にbundle installを実行し、次にpythonをインストールし、requirements.txtファイルのすべてのdepsをインストールする必要があります。

しかし、私の場合は、rubyライブラリ(名前はSASS / COMPASS )を使用していくつかのコマンドを実行したいとも思っていました。そのためには、2つの選択肢があると思います。1つ目は、リポジトリの上にフォークして、ビルドでこれらのコマンドの実行を追加することです(このようにして、heroku runを実行するのではなく、必要なすべての特権が与えられます...)。

2番目のオプションは、Rakefileを追加し、それらをで指定することですrake assets:precompile task

したがって、Compassを使用した私の場合、Rakefileは次のようになります。

require 'yaml'
require 'pathname'
require 'rspec/core/rake_task'
include FileUtils


namespace 'assets' do
  desc 'Updates the stylesheets generated by Sass/Compass'
  task :precompile do
    print %x(compass compile --time)
  end
end
于 2013-08-07T09:48:46.297 に答える