Я не могу получить 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
Еще раз , все упомянутые выше локальные вары равны «Нет».
Любые предложения, как исправить это?
Вы пытаетесь запустить python с активированным virtualenv. Обычно это не работает. –
Также рассмотрите возможность использования appengine_config.py для выполнения манипуляций с курсом, а не с помощью параметров settings.py - это выполняется сервером, прежде чем что-либо делать с вашим кодом. https://developers.google.com/appengine/docs/python/tools/appengineconfig –
Также смотрите, где вы разместили локальную копию numpy, которую вы не хотите разворачивать. Вы запустите производственную копию, которая уже существует. –