Google App Engine:部署应用程序时出现“错误:没有名为 numpy.distutils.core 的模块”

Posted

技术标签:

【中文标题】Google App Engine:部署应用程序时出现“错误:没有名为 numpy.distutils.core 的模块”【英文标题】:Google App Engine: "Error: no module named numpy.distutils.core" while deploying an app 【发布时间】:2019-01-13 21:29:17 【问题描述】:

我已经阅读了几个关于在 GAE 上部署 Python 应用程序的问题,但我仍然无法自行完成工作。首先我认为这是因为我的requirements.txt 文件和我的lib 文件夹,但后来我发现(通过这个question)我弄乱了配置和灵活的环境,你应该只使用需求文件(我可能有也误解了这一点,所以如果我错了,请告诉我)。

我有这个app.yaml 文件:

runtime: python
api_version: 1
env: flex
threadsafe: true

handlers:
- url: /.*
  script: app.app 

runtime_config:
  python_version: 2

entrypoint: gunicorn -w 4 -b $HOST:$PORT app:app

这是我的requirements.txt 文件:

certifi==2018.4.16
cffi==1.11.5
chardet==3.0.4
click==6.7
enum34==1.1.6
Flask==1.0.2
funcsigs==1.0.2
gunicorn==19.9.0
idna==2.7
itsdangerous==0.24
Jinja2==2.10
llvmlite==0.24.0
MarkupSafe==1.0
numba==0.39.0
numpy==1.15.0
pycparser==2.18
PySoundFile==0.9.0.post1
requests==2.19.1
resampy==0.2.1
scikits.talkbox==0.2.5
scipy==1.1.0
singledispatch==3.4.0.3
six==1.11.0
SoundFile==0.10.2
urllib3==1.23
Werkzeug==0.14.1

我总是遇到的错误是

第 1 步:收集 scikits.talkbox==0.2.5(来自 -r requirements.txt(第 20 行)) 第 1 步:下载 https://files.pythonhosted.org/packages/65/a0/410eb932e1765186a4728d1c9b28410695d554c47439bcb69a407d5d3921/scikits.talkbox-0.2.5.tar.gz (151kB) 第 1 步:完成命令 python setup.py egg_info 的输出: 第 1 步:回溯(最近一次通话最后一次): 第 1 步:文件“”,第 1 行,在 第 1 步:文件“/tmp/pip-build-3zN00W/scikits.talkbox/setup.py”,第 10 行,在 第 1 步:从 numpy.distutils.core 导入设置 第 1 步:ImportError: No module named numpy.distutils.core

所以,在做了一些研究之后,我发现这个question 显示了一种绕过这个问题的“黑客”,唯一的事情是在本地更改它没有任何区别。我在本地运行我的应用程序没有问题。

【问题讨论】:

【参考方案1】:

好的,显然我能找到的唯一解决方案是将app.yaml 中的runtime 参数更改为custom,然后使用我的配置创建一个Dockerfile。

我仍然不知道为什么scikits.talkbox 无法通过我的requirements.txt 正确安装,但我发现使用

RUN pip install scikits.talkbox

在我的 Dockerfile 中并从我的需求文件中删除它就足以让它工作。我很高兴知道是否有人可以做到这一点,因为我对此非常好奇。

现在我的app.yaml 看起来像这样:

runtime: custom
env: flex

【讨论】:

以上是关于Google App Engine:部署应用程序时出现“错误:没有名为 numpy.distutils.core 的模块”的主要内容,如果未能解决你的问题,请参考以下文章

在 Google App Engine 中部署 Spring Boot gradle 应用

Google App Engine检查更新

点击“部署均值开发堆栈”不会执行任何操作,Google App Engine

Google App Engine Java - 对于 POST 参数,request.getParameter 在部署时返回 null,但在本地工作

部署时出现 Google App Engine“云数据存储服务”错误

java.lang.NoClassDefFoundError:部署到Google App Engine时无法初始化类net.sf.cglib.proxy.Enhancer。