Python 2.7 谷歌应用程序引擎:“;错误:没有名为numpy.distutils.core的模块;在部署应用程序时

Python 2.7 谷歌应用程序引擎:“;错误:没有名为numpy.distutils.core的模块;在部署应用程序时,python-2.7,numpy,google-app-engine,importerror,python-module,Python 2.7,Numpy,Google App Engine,Importerror,Python Module,我已经阅读了一些关于在GAE上部署Python应用程序的问题,但我仍然无法完成自己的工作。首先,我认为这是因为我的requirements.txt文件和lib文件夹,但后来我发现(通过这一点)我弄乱了配置,对于灵活的环境,你应该只使用需求文件(我可能也误解了这一点,如果我错了,请告诉我) 我有这个app.yaml文件: runtime: python api_version: 1 env: flex threadsafe: true handlers: - url: /.* script:

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

我有这个
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
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
这是我的
requirements.txt
文件:

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
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:下载(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:导入错误:没有名为numpy.distutils.core的模块


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

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

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

RUN pip install scikits.talkbox
在我的Dockerfile中,并将其从我的需求文件中删除就足以使其正常工作。我很高兴知道是否有人可以让它发生,否则,因为我真的很好奇这一点

现在我的
app.yaml
看起来如下:

runtime: custom
env: flex