Python Rake任务在Heroku上因“源:未找到”而失败

Python Rake任务在Heroku上因“源:未找到”而失败,python,ruby-on-rails,ruby,heroku,virtualenv,Python,Ruby On Rails,Ruby,Heroku,Virtualenv,我有一个Rails项目,其中包含一个名为update\u data的rake任务,如下所示: 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;

我有一个Rails项目,其中包含一个名为
update\u data
的rake任务,如下所示:

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\u data
时,它工作得非常好。但是,当我运行
heroku run rake update_data
时,它会失败,出现
sh:1:source:not found
。我应该怎么做才能在Heroku上获得
源代码?

我觉得你不需要激活你的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

我觉得你不需要激活你的虚拟电视

只需使用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

错误消息
sh:1:source:notfound
表示:

  • 您运行的是
    sh
    ,而不是
    bash
  • source
    不是内置命令,shell无法在
    PATH
    中找到
    source
  • 要确认此运行,请键入
    source
    ,并将输出与尝试执行
    foobar
    进行比较

    我建议您尝试将命令传递给bash(通过`bash-c“您的命令在这里”)。您可能还需要一个Python构建包。您可以添加以下内容:

    heroku buildpacks:add heroku/python
    

    错误消息
    sh:1:source:notfound
    表示:

  • 您运行的是
    sh
    ,而不是
    bash
  • source
    不是内置命令,shell无法在
    PATH
    中找到
    source
  • 要确认此运行,请键入
    source
    ,并将输出与尝试执行
    foobar
    进行比较

    我建议您尝试将命令传递给bash(通过`bash-c“您的命令在这里”)。您可能还需要一个Python构建包。您可以添加以下内容:

    heroku buildpacks:add heroku/python
    

    我认为
    {root}/data_scripts/venv/bin/python data_scripts/scripts/main.py
    也应该有效。不过,在这种情况下,问题似乎不在命令中,我认为
    {root}/data\u scripts/venv/bin/python data\u scripts/scripts/main.py
    也应该可以。虽然在本例中,问题似乎不在命令中,但我得到了
    /app/data\u scripts/venv/bin/python:9:/app/data\u scripts/venv/bin/python:Syntax error:EOF in back quote substitution
    。heroku环境似乎没有配置为运行Python?有了它,我得到了
    /app/data\u scripts/venv/bin/Python:9:/app/data\u scripts/venv/bin/Python:Syntax error:EOF in back quote substitution
    。heroku环境似乎没有配置为运行Python?
    heroku buildpack:add heroku/Python
    失败,检测set buildpack失败https://codon-buildpacks.s3.amazonaws.com/buildpacks /heroku/python.tgz
    当我尝试推送到heroku master时。您需要向根目录添加
    requirements.txt
    目录有关详细信息,请参阅。
    heroku buildpack:add heroku/python
    失败,检测set buildpack失败https://codon-buildpacks.s3.amazonaws.com/buildpacks /heroku/python.tgz当我尝试推送到heroku master时。您需要将
    requirements.txt
    添加到根目录。详情请参阅。