dev_appserver.py app.yaml создает: ImportError: Не удалось импортировать модуль расширения с несколькими массивами - PullRequest
0 голосов
/ 25 сентября 2018

Я запускаю эту команду:

dev_appserver.py app.yaml

и получаю ошибку:

Traceback (most recent call last):
  File "C:\Users\sehrlich\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "C:\Users\sehrlich\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "C:\Users\sehrlich\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\main.py", line 2, in <module>
    from Get_Data import get_data, build_connection, run_sql
  File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\Get_Data.py", line 1, in <module>
    import numpy as np
  File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\__init__.py", line 142, in <module>
    from . import add_newdocs
  File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\lib\__init__.py", line 8, in <module>
    from .type_check import *
  File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "C:\Users\sehrlich\Desktop\ToolKit\Application Projects\Tableau Web Data Connector Improvement\tableauextensions\lib\numpy\core\__init__.py", line 26, in <module>
    raise ImportError(msg)
ImportError:
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

Я установил и удалил NumPy.Они прекрасно работают, когда я запускаю что-то вроде

python -m flask run 

и использует NumPy без проблем.Не могу понять, в чем проблема.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Поскольку вы хотите использовать numpy, поставляемый GAE, то:

  • его не следует устанавливать внутри кода приложения (трассировка указывает, что он запускается из каталога lib приложения)куда идут специализированные библиотеки)
  • вы должны запросить его в разделе app.yaml libraries:

    libraries:
    - name: numpy
      version: "1.6.1"
    
  • вам следуеттакже запрошенная версия numpy установлена ​​локально в вашей системе (но не в директории приложения), чтобы сервер разработки мог использовать ее, поскольку numpy является одной из библиотек с таким требованием, см. Использование встроенногосвязанные библиотеки с локальным сервером разработки :

Многие из встроенных библиотек, предоставляемых средой выполнения, автоматически доступны для локального сервера разработки.Однако следующие локальные библиотеки должны быть установлены локально, прежде чем вы сможете использовать их с локальным сервером разработки:

...

0 голосов
/ 26 сентября 2018

Как сказал Дэн Корнилеску, GAE Standard не может использовать библиотеки с кодом, скомпилированным в C [1] [2] :

[От 1] Вы можете использовать сторонние библиотеки, которые являются чистым кодом Python без расширений C

[От 2] Интерпретатор не может загружать службы Python с кодом C;это "чистая" среда Python.

NumPy - один из таких случаев, вы можете увидеть его в их Git Repo [3] и в Википедии [4] (Написано в: Python, C).Также проверьте первый ответ на этот SO вопрос .

Как ни странно, я обнаружил версию только для NumPy, основанную на "чистом" Python, называемую "TinyNumPy" [5] , которые можно использовать в стандарте GAE.Это его ограничения в соответствии с их Git Repo:

  • ndarray.flat итератор не может быть проиндексирован (это генератор).
  • Нет поддержки порядка Fortran.
  • Поддержка типов данных, ограниченных bool, uin8, uint16, uint32, uint64, int8, int16, int32, int64, float32, float64.
  • Функции, которые вычисляют статистику по данным, намного медленнее, посколькуитерация происходит в Python.
  • Назначение с помощью нарезки обычно довольно быстрое, но может быть медленным, если шаг неудачен.

В двух словах, вы либо используетеGAE Flex или старайтесь избегать NumPy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...