我运行以下命令:
dev_appserver.py app.yaml
我得到一个错误:
Traceback (most recent call last):
File "C:\Users\sehrlich\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "C:\Users\sehrlich\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "C:\Users\sehrlich\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\main.py", line 2, in <module>
from Get_Data import get_data, build_connection, run_sql
File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\Get_Data.py", line 1, in <module>
import numpy as np
File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\__init__.py", line 142, in <module>
from . import add_newdocs
File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\lib\__init__.py", line 8, in <module>
from .type_check import *
File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\lib\type_check.py", line 11, in <module>
import numpy.core.numeric as _nx
File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\core\__init__.py", line 26, in <module>
raise ImportError(msg)
ImportError:
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
我已经安装并卸载了NumPy。当我运行类似的东西时,他们的应用程序运行正常
python -m flask run
,它使用NumPy没问题。无法找出问题所在。
答案 0 :(得分:2)
如Dan Cornilescu所说,GAE标准不能将库使用在C [1] [2]中编译的代码使用:
[从1开始] 您可以使用第三方库,这些库是不带C扩展名的纯Python代码
[From 2] 解释器无法使用C代码加载Python服务;这是一个“纯” Python环境。
NumPy就是其中一种情况,您可以在其Git Repo [3]和Wikipedia [4](用Python,C语言编写)中看到。另外,请检查对此SO question的第一个答案。
很奇怪,我在NumPy上找到了一个仅基于可以在GAE Standard中使用的名为“ TinyNumPy” [5]的“纯” Python版本。根据其Git Repo,这是它的局限性:
- ndarray.flat迭代器无法建立索引(它是生成器)。
- 不支持Fortran订单。
- 支持仅限于bool,uin8,uint16,uint32,uint64,int8,int16,int32,int64,float32,float64的数据类型。
- 计算数据统计信息的功能要慢得多,因为迭代是在Python中进行的。
- 通过切片进行分配通常非常快,但是如果跨步很不幸,则可能会很慢。
简而言之,您可以使用GAE Flex或尝试避免使用NumPy。
答案 1 :(得分:1)
由于您要使用GAE提供的numpy
,因此:
lib
目录运行的,该目录是供应商提供的库所在的位置)您应该在app.yaml
的{{1}}部分中进行请求:
libraries
您还应该在系统上本地安装请求的libraries:
- name: numpy
version: "1.6.1"
版本(而不是在应用程序目录中),以便开发服务器可以使用它,因为numpy
是库之一有这样的要求,请参见Using built-in bundled libraries with the local development server:
运行时提供的许多内置库是 自动提供给本地开发服务器。然而 必须先在本地安装以下内置库,然后才能 在本地开发服务器上使用它们:
...