numpy 1.9.3, ошибка импорта: нет модуля с именем _globals

#python #numpy #conda

#python #numpy #conda

Вопрос:

По причинам зависимости (с использованием mayavi) Я должен использовать numpy v1.9.3 в conda python2.7 virtualenv.

Однако импорт numpy завершается ошибкой:

 (python2) User@P-EliteBook-840-G3:~$ python
Python 2.7.12 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:42:40) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/User/anaconda3/envs/python2/lib/python2.7/site-packages/numpy/__init__.py", line 112, in <module>
    from ._globals import ModuleDeprecationWarning, VisibleDeprecationWarning
ImportError: No module named _globals
  

И действительно, в _globals.py в /home/User/anaconda3/envs/python2/lib/python2.7/site-packages/numpy/ нет
Если я установлю numpy 1.11, то импорт будет работать нормально. Есть идеи, что вызывает эту проблему?

Я установил numpy с conda install numpy=1.9 внутри моей среды python2.

Комментарии:

1. Его нет в numpy версии 1.8 (np.version.version ‘1.8.0’), и нет указания, когда он был установлен github.com/numpy/numpy/blob/master/numpy/_globals.py

2. @NaN Извините, я согласен, но я не уверен, что понимаю вашу точку зрения?

3. Я проверил реальный скрипт на GitHub. Обычно, если это важное дополнение, будет указано, какая версия была добавлена. Оттуда вы можете выяснить, какие другие модули его вызывают. В этом случае ссылки на него появляются только дважды, поэтому полная установка более новой версии определенно исправит это, но в этом случае простого копирования скрипта было бы достаточно для большей части

Ответ №1:

Я столкнулся с аналогичными проблемами при использовании numpy 1.7 в python 2.7. Это просто потому, что более низкая версия numpy совместима только с python 2.6. Решение заключается либо в обновлении вашего numpy, либо в понижении версии python.

В любом случае, конечным решением является использование conda create -n для создания виртуальных сред для разных проектов. Разработки в различных пакетах настолько сильно отличаются, что никто не может отследить их все.