2017-02-05 15 views
0

にfound`ない私が持っている以下のとおりであるupdate_dataと呼ばれるrakeタスク、とRailsのプロジェクト:rakeタスク `ソース:Herokuの

every 1.day, :at => '2:30 am' do 
    root = File.expand_path('../..', __FILE__) 
    system("""(source #{root}/data_scripts/venv/bin/activate; 
      python #{root}/data_scripts/scripts/main.py; 
      deactivate)""") 
end 

これは最初、virtualenvのをアクティブスクリプトを実行する必要があり、 virtualenvを無効にします。 rake update_dataを実行すると、これは完全に動作します。ただし、heroku run rake update_dataを実行すると、sh: 1: source: not foundで失敗します。 Herokuでsourceを利用できるようにするにはどうすればよいですか?

+0

私は '#{root}/data_scripts/venv/bin/python data_scripts/scripts/main.py'もうまくいくと思います。この場合、問題がコマンドにないように見える – Marat

答えて

1

エラーメッセージsh: 1: source: not foundがあることを意味します:

だけではvirtualenvのPythonの実行可能ファイルを使用し

  • source
  • があり、

    1. があなたの代わりにbashshを実行していない組み込みコマンドとシェルはsourcePATHに見つけることができません。

    この実行heroku run sh、タイプsourceを確認し、foobarを実行しようとすると、出力を比較します。

    コマンドをbashに渡すことをお勧めします( `bash -c"コマンドを使用してください)。 Pythonビルドパックが必要な場合もあります。

    heroku buildpacks:add heroku/python 
    
    +0

    heroku masterにプッシュしようとすると 'heroku buildpacks:heroku/pythonを追加する 'が' set buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks /heroku/python.tgz'を検出できませんでした。 – alpaca

    +0

    'requirements.txt'をルートディレクトリに追加する必要があります。詳細は[the docs](https://devcenter.heroku.com/articles/python-runtimes)をご覧ください。 –

    +0

    は完璧に動作します、ありがとうございます! – alpaca

    0

    virtualenvを有効にする必要はありません。

    every 1.day, :at => '2:30 am' do 
        root = File.expand_path('../..', __FILE__) 
        system("#{root}/data_scripts/venv/bin/python #{root}/data_scripts/scripts/main.py") 
    end 
    
    +0

    これで、私は/ app/data_scripts/venv/bin/pythonを取得します:9:/ app/data_scripts/venv/bin/python:構文エラー:EOFバック 引用符置換 ' heroku環境がPythonを実行するように設定されていないようですね? – alpaca

    関連する問題