#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
для создания виртуальных сред для разных проектов. Разработки в различных пакетах настолько сильно отличаются, что никто не может отследить их все.