Django,GAE,numpy:无法导入名称多阵列

时间:2013-11-10 16:14:42

标签: python django google-app-engine numpy

我无法使用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

上述所有本地变量再次等于“无”。

有任何建议如何解决这个问题?

1 个答案:

答案 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并且它可以工作。