【问题标题】:Installing numpy in gcloud App Engine running Node.js runtime (or even custom runtime). Running fine locally but getting errors when deployed在运行 Node.js 运行时(甚至自定义运行时)的 gcloud App Engine 中安装 numpy。在本地运行良好,但在部署时出现错误
【发布时间】:2020-06-14 08:53:06
【问题描述】:

我目前正在谷歌云应用引擎上部署基于 node.js 的服务器,该引擎调用 python 脚本来处理一些数据。

作为简要概述,我的代码是这样执行的:

  1. 前端 html 向服务器发布数据
  2. 服务器接收数据
  3. Node.js 调用 python 脚本并在后台将数据作为异步函数传递
  4. 数据处理完成

问题:

python 进程使用本地导入的 numpy 和 matplotlib 库。

但在部署时,似乎无法在 App Engine 上导入这些库。

我收到的错误:

Error: ImportError: No module named numpy
at PythonShell.parseError (/app/node_modules/python-shell/index.js:260)
at terminateIfNeeded (/app/node_modules/python-shell/index.js:139)
at ChildProcess.<anonymous> (/app/node_modules/python-shell/index.js:131)
at ChildProcess.emit (events.js:198)
at Process.ChildProcess._handle.onexit (child_process.js:248)

我尝试过的事情:

  1. 在 app.yaml 中
    • 将运行环境从 nodejs 更改为 custom
    • 修改 docker 文件并尝试在那里安装 numpy。

在 dockerfile 顶部添加的行:

    FROM gcr.io/google-appengine/python
    RUN virtualenv /env
    ENV VIRTUAL_ENV /env
    ENV PATH /env/bin:$PATH
    ADD requirements.txt /app/requirements.txt
    RUN pip install -r /app/requirements.txt
    ADD . /app

requirements.txt:

numpy==1.6.1

它编译得很好,但仍然给了我 Error: ImportError: No module named numpy 错误。

  1. 在 python 进程上,预先启动一个 python 进程并尝试在初始化主处理脚本之前安装 numpy(我知道这不是一个好主意,因为它会在每次进程发生时下载 numpy,但我迫切希望得到它至少以任何可能的方式工作
const spawn = require("child_process").spawn;
pythonProcess = spawn('python',["-m","pip", "install", "numpy", "matplotlib"]);

会产生这样的错误:

Error: Python Process Recieved: /usr/bin/python: No module named pip
at Socket.pythonProcess.stderr.on (analysis.js:286)
at Socket.emit (events.js:198)
at addChunk (_stream_readable.js:288)
at readableAddChunk (_stream_readable.js:269)
at Socket.Readable.push (_stream_readable.js:224)
at Pipe.onStreamRead (internal/stream_base_commons.js:94)

我已经在线阅读了一些文档,如果您正在运行 runtime:python27 并在那里添加库,似乎可以导入这些库,但我的应用程序是 99% node.js,python 处理部分只是其中的一小部分应用程序。

我不知道如何解决这些问题。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: python node.js docker google-app-engine


    【解决方案1】:

    我认为您需要通过添加在您的自定义运行时安装 PIP

    运行 apt-get install python-pip

    这是我在这个例子中的 Dockerfile

    FROM gcr.io/google-appengine/python
    RUN apt-get install python-pip
    RUN virtualenv /env
    ENV VIRTUAL_ENV /env
    ENV PATH /env/bin:$PATH
    ADD requirements.txt /app/requirements.txt
    RUN pip install -r /app/requirements.txt
    ADD . /app
    

    【讨论】:

      猜你喜欢
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      相关资源
      最近更新 更多