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 Java - 对于 POST 参数,request.getParameter 在部署时返回 null,但在本地工作
部署时出现 Google App Engine“云数据存储服务”错误
java.lang.NoClassDefFoundError:部署到Google App Engine时无法初始化类net.sf.cglib.proxy.Enhancer。