2013-11-10 3 views
0

Я не могу получить numpy, работая с Django (django-nonrel) и Google App Engine. Вот структура проекта:Django, GAE, numpy: не может импортировать имя multiarray

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

Все сторонние библиотеки установлены в Lib/директории с помощью команды: «пункт установить -t пакет». Кроме того, settings.py содержит строку:

sys.path.append(os.path.join(PROJECT_PATH, 'lib')) 

В views.py я вызвать функцию из algorithm.py, которая использует NLTK. Тем не менее, при вызове его в качестве пользователя (на сервере разработки) я получаю следующее сообщение об ошибке:

Exception Type: ImportError
Exception Value: cannot import name multiarray
Exception Location: /home/me/gae/project/lib/numpy/core/init.py in , line 6
Python Executable: /home/me/gae/virtualenv_directory/bin/python
Python Version: 2.7.3

Traceback заканчивается строкой:

File "/home/me/gae/project/lib/numpy/core/init.py" in
6. from . import multiarray

Местные VARS:

file None
absolute_import None
package None
path None
name None
version None
doc None
print_function None

Ultimate answer to relative python imports говорит что:

Relative imports use a module's name attribute to determine that module's position in the package hierarchy. If the module's name does not contain any package information (e.g. it is set to 'main') then relative imports are resolved as if the module were a top level module, regardless of where the module is actually located on the file system.

Похоже, что ошибка вызвана : имя равно «None». Но в чем причина этого?

В оболочке ./manage.py я могу импортировать numpy.core.multiarray или вызвать функцию из алгоритма.py без каких-либо ошибок.

Я также попытался использовать GAE NumPy, добавив следующие строки в app.yaml:

- name: numpy 
    version: latest 

Но результат был другой ошибки импорта, то есть:

Exception Value: cannot import name scimath
Exception Location: /home/me/gae/virtualenv_directory/local/lib/python2.7/site-packages/numpy/lib/init.py in , line 17
Python Executable: /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 . import scimath as emath

Еще раз , все упомянутые выше локальные вары равны «Нет».

Любые предложения, как исправить это?

+0

Вы пытаетесь запустить python с активированным virtualenv. Обычно это не работает. –

+0

Также рассмотрите возможность использования appengine_config.py для выполнения манипуляций с курсом, а не с помощью параметров settings.py - это выполняется сервером, прежде чем что-либо делать с вашим кодом. https://developers.google.com/appengine/docs/python/tools/appengineconfig –

+0

Также смотрите, где вы разместили локальную копию numpy, которую вы не хотите разворачивать. Вы запустите производственную копию, которая уже существует. –

ответ

2

У меня была такая же проблема на Mac. Вы не можете установить Numpy 1.6.1 на Mac, несмотря на использование

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, и он работает.

Смежные вопросы