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

时间:2018-08-06 21:21:14

标签: python-2.7 numpy google-app-engine importerror python-module

我已经阅读了有关在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:在
的第10行中输入“ /tmp/pip-build-3zN00W/scikits.talkbox/setup.py”   步骤#1:从numpy.distutils.core导入设置
  步骤1:ImportError:没有名为numpy.distutils.core的模块

因此,在进行了一些研究之后,我发现这个question表现出一种绕过此问题的“ hack”,唯一的好处是,在本地更改它不会有任何区别。我在本地运行应用程序没有问题。

1 个答案:

答案 0 :(得分:1)

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

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

RUN pip install scikits.talkbox

在我的Dockerfile中并将其从需求文件中删除就足以使其正常工作。我很高兴知道是否有人可以实现它,因为我对此很好奇。

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

runtime: custom
env: flex