0

我无法与 Django (django-nonrel) 和 Google App Engine 一起工作。这是项目结构:

gae/
  virtualenv_directory/
  project/
    app/
      views.py
      algorithm.py
      ...
    lib/
      nltk/
      numpy/
      ...
    nltk_data/
    settings.py

使用命令:“pip install -t .package”将所有第三方库安装在 lib/ 目录中。此外,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 第 6 行
Python 可执行文件:/home/me/gae/virtualenv_directory/bin/ python
Python版本:2.7.3

Traceback 以以下行结束:

6.中的文件“/home/me/gae/project/lib/numpy/core/ init .py”来自 .
导入多数组

本地变量:

文件
absolute_import 无

路径
名称
版本
文档
print_function 无

对相关 python 进口的最终回答说:

相对导入使用模块的名称属性来确定该模块在包层次结构中的位置。如果模块的名称不包含任何包信息(例如,它被设置为' 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 第 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
17. from . 将 scimath 导入为 emath

再一次,上面提到的所有本地变量都等于“无”。

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

4

1 回答 1

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

由于对命名空间的依赖,我无法使用最新的 numpy multiarray。此外,目前 GAE 仅支持最高版本,numpy===1.6.1因此安装任何更高版本是有意义的。

解决方案是让我安装1.6.2,我可以在 Mac 上安装它并且仍然需要multiarray。现在我可以import numpy在 GAE 中工作了。

于 2015-11-06T09:30:01.980 回答