如何将python依赖项添加到heroku节点服务器?

123*_*123 6 python dependencies heroku node.js

我有一个运行Node的Heroku应用程序,但我需要能够在此服务器上运行Python脚本.我正在尝试安装我的Python依赖项,但无法使其工作.

我已经将python和节点构建包添加到我的项目中,我创建了一个虚拟环境并成功安装了requirements.txt,但我仍然发现模块未找到错误.

如何在Heroku节点服务器上正确安装Python包?

Heroku表明我已经正确设置了两个buildpack:

heroku buildpacks --app <my app>
Run Code Online (Sandbox Code Playgroud)

输出:

1. heroku/nodejs
2. heroku/python 
Run Code Online (Sandbox Code Playgroud)

如果我尝试安装requirements.txt:

$ pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

它说要求已经满足.我猜这是参考我当地的环境.

Requirement already satisfied (use --upgrade to upgrade): requests==2.7.0 in /Library/Python/2.7/site-packages (from -r requirements.txt (line 1))
Requirement already satisfied (use --upgrade to upgrade): beautifulsoup4==4.5.3 in /Library/Python/2.7/site-packages (from -r requirements.txt (line 2))
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试运行我的Python脚本,我会得到一个无模块错误:

回溯(最近一次调用最后一次):文件"Webcrawler.py",第3行,来自urllib.request import urlopen ImportError:没有名为request的模块

小智 6

我已经解决了这个问题:

  1. 我创建(如果没有)文件"requirements.txt"直接进入入口点的根目录(index.js,在我的情况下)
  2. 我手动将具有特定版本的库添加到文件中,在我的例子中如下:

    requests==2.7.0
    beautifulsoup4==4.5.3
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我创建(如果没有)文件"runtime.txt"只有一行:我需要的python版本,在我的情况下:

    python-2.7.14
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我用两个命令创建了multibuildpacks:

    heroku buildpacks:set heroku/python
    heroku buildpacks:add --index 1 heroku/nodejs
    
    Run Code Online (Sandbox Code Playgroud)
  5. 最后,我继续使用git命令:

    git add requirements.txt runtime.txt
    git commit requirements.txt runtime.txt -m "requirements"
    git push heroku master
    
    Run Code Online (Sandbox Code Playgroud)


rsp*_*rsp 0

您可能需要使用多个构建包。看:

在 Heroku 开发中心。