2017-02-05 87 views
0

不found`我有一個Rails項目,叫做update_data rake任務,主要內容如下: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意味着:

  1. 運行sh而不是bash
  2. source不是一個內置的命令和該殼無法在PATH中找到source

爲了證實這一點來看heroku run sh,類型source和輸出,試圖執行foobar比較。

我建議你嘗試將命令傳遞給bash(通過`bash -c「你的命令來到這裏)。你可能還需要一個Python buildpack。你可以添加它:

heroku buildpacks:add heroku/python 
+0

'heroku buildpack:加入heroku/python'失敗,'嘗試推送給heroku master時無法檢測到set buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks /heroku/python.tgz'。 – alpaca

+0

您需要將'requirements.txt'添加到根目錄。有關詳細信息,請參閱[文檔](https://devcenter.heroku.com/articles/python-runtimes)。 –

+0

完美的作品,非常感謝你! – alpaca

0

我覺得你不需要激活你的virtualenv。

只需使用的virtualenv的python的可執行文件:

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:Syntax error:EOF在後面 報價替代'。好像heroku環境沒有配置爲運行Python? – alpaca

相關問題