我无法使用Django(django-nonrel)和Google App Engine。这是项目结构:
gae/
virtualenv_directory/
project/
app/
views.py
algorithm.py
...
lib/
nltk/
numpy/
...
nltk_data/
settings.py
所有第三方库都使用以下命令安装在lib /目录中:“pip install -t.package”。 另外,settings.py包含以下行:
sys.path.append(os.path.join(PROJECT_PATH, 'lib'))
在views.py中,我调用来自algorithm.py的函数,该函数使用nltk。但是,当它作为用户(在开发服务器上)调用时,我收到以下错误:
异常类型:ImportError
异常值:无法导入名称多列阵
例外位置:/home/me/gae/project/lib/numpy/core/init.py in,line 6
Python可执行文件:/ home / me / gae / virtualenv_directory / bin / python
Python版本:2.7.3
回溯以行结束:
文件“/home/me/gae/project/lib/numpy/core/init.py”in
来自。导入多阵列
本地大战:
档案无 absolute_import无
包没有 路径无
名称无 版本无
doc 无 print_function无
Ultimate answer to relative python imports说:
相对导入使用模块的名称属性来确定模块在包层次结构中的位置。如果模块的名称不包含任何包信息(例如,它设置为' main '),则解析相对导入,就像模块是顶级模块一样,无论模块实际位于何处在文件系统上。
因此,错误似乎是由名称等于'无'引起的。但是它的原因是什么?
在./manage.py shell中我可以导入numpy.core.multiarray或从algorithm.py调用该函数而不会出现任何错误。
我还尝试使用GAE numpy,将以下行添加到app.yaml:
- name: numpy
version: latest
但结果是另一个导入错误,即:
异常值:无法导入名称scimath
例外位置:/home/me/gae/virtualenv_directory/local/lib/python2.7/site-packages/numpy/lib/init.py in,line 17
Python可执行文件:/ home / me / gae / virtualenv_directory / bin / python/home/me/gae/virtualenv_directory/local/lib/python2.7/site-packages/numpy/lib/ init .py in
来自。将scimath导入为emath
上述所有本地变量再次等于“无”。
有任何建议如何解决这个问题?
答案 0 :(得分:2)
我在Mac上遇到了同样的问题。尽管使用
,但无法在Mac上安装numpy 1.6.1 CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install numpy==1.6.1
我无法在multiarray
命名空间中使用最新的numpy依赖项。
除了目前GAE仅支持最多numpy===1.6.1
因此,安装更高版本是有意义的。
解决方案是我安装1.6.2
,我可以在Mac上安装,但仍然需要multiarray
。现在我可以在GAE中import numpy
并且它可以工作。