Не может импортировать имя multiarray в numpy с python3

Обычно я работаю с python 2.7, но на этот раз мне нужно протестировать скрипт на python3.

Он уже установлен на моем компьютере, однако, когда я запускаю «python3», затем иду «import numpy», он показывает мне «невозможно импортировать имя multiarray».

Я даже установил anaconda3 для тестирования, но ничего не происходит

myName:~/anaconda3/bin$ python3
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 180, in     <module>
    from . import add_newdocs
  File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/usr/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/usr/lib/python2.7/dist-packages/numpy/core/__init__.py", line 14, in <module>
    from . import multiarray
ImportError: cannot import name 'multiarray'

Я видел, что он ищет в lib / python2.7, но я не могу найти, что делать, чтобы заставить его искать в библиотеке python3.

Я уже пробовал python -m pip install numpy и пытался создать virtualenv в python3, но все равно получаю ту же ошибку.

Я не понимаю, что мне делать. Кто-нибудь может мне помочь ?

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

редактировать:

Я попробовал ответить @gehbiszumeis и получил следующее:

myName:~ $ cd anaconda3/bin/
myName:~/anaconda3/bin $ source activate /home/myName/anaconda3
(base) myName:~/anaconda3/bin $ conda list numpy
# packages in environment at /home/myName/anaconda3:
#
# Name                    Version                   Build  Channel
numpy                     1.14.3           py36hcd700cb_1  
numpy-base                1.14.3           py36h9be14a7_1  
numpydoc                  0.8.0                    py36_0  
(base) myName:~/anaconda3/bin $ python3
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 180, in <module>
    from . import add_newdocs
  File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/usr/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/usr/lib/python2.7/dist-packages/numpy/core/__init__.py", line 14, in <module>
    from . import multiarray
ImportError: cannot import name 'multiarray'

Я вижу, что установлено numpy 36, когда я набираю conda list numpy, но похоже, что это не работает .. Я что-то пропустил?

edit2: После метода @Pal Szabo я протестировал команду python3 -m pip install --upgrade pip и получил эту ошибку:

(env) (base) myName:~/anaconda3/bin $ python3 -m pip install --upgrade pip
Traceback (most recent call last):
  File "/home/myName/anaconda3/lib/python3.6/runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/home/myName/anaconda3/lib/python3.6/runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/home/myName/anaconda3/lib/python3.6/runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 4, in <module>
    import locale
  File "/home/myName/anaconda3/bin/env/lib/python3.6/locale.py", line 16, in <module>
    import re
  File "/home/myName/anaconda3/bin/env/lib/python3.6/re.py", line 142, in <module>
    class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'`

Это сумасшедшая смесь между python3, python2.7, затем снова python3. Я заблудился \ o /

edit3:

Я наконец нашел свою ошибку. Это была проблема с моим PYTHONPATH, который указывал куда-то, где был определен файл .pth, с некоторой жесткой ссылкой на библиотеки python 2.7. с простым "unset PYTHONPATH" он работает нормально. Спасибо вам всем

4
0
6 980
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Исходя из того, что я вижу из вашего листинга кода, кажется, что среда anaconda не активирована (обычно это обозначается именем среды в скобках () перед подсказкой). Из-за этого python3 пытается найти numpy и находит только тот, который вы использовали для python 2.7 ранее, что вызывает ошибку (см. Сообщения об ошибках python2.7)

Пытаться

source activate <your-anaconda-environment>

Тогда ваше приглашение должно выглядеть так

(<your-anaconda-environment>) myName:~/anaconda3/bin$ 

Numpy должен содержаться в стандартной среде anaconda. Затем попробуйте проверить, установлен ли numpy в вашей среде с помощью

conda list numpy

Если в списке нет numpy, попробуйте установить его с помощью pip, как вы писали ранее.

Я протестировал ваше решение и отредактировал свой пост. Не могу ответить вам должным образом, так как длина превышает 5хх символов. Это правильный способ редактировать сообщение?

LudwigVonKoopa 10.09.2018 09:23

Попробуйте запустить python, вызывая только (base) myName:~/anaconda3/bin $ python вместо ...python3. Кажется, вы все еще вызываете питон, не принадлежащий к среде

gehbiszumeis 10.09.2018 09:32

происходит то же самое :(

LudwigVonKoopa 10.09.2018 09:41

вау, странно! Хорошо, следующим шагом будет установка совершенно новой среды anaconda со стандартными пакетами и python 3.6. Попробуйте conda create -n new_env_full anaconda python=3.6. Дополнительные сведения см. В примерах здесь. После этого запустите среду с помощью source activate env_full и попробуйте вызвать python и снова импортировать numpy.

gehbiszumeis 10.09.2018 09:49

Я сделал именно то, что вы упомянули, создал new-env-full, он сказал в списке установки, что он установил numpy «1.14.3-py36hcd700cb_1», поэтому я предполагаю, что «py36» означает python3.6, поэтому он должен быть правильным. Однако, когда я захожу в env и набираю «python», а затем «import numpy», у меня все еще есть ошибка и «python2.7» в трассировке. То же самое с python3, затем импортируйте numpy.

LudwigVonKoopa 10.09.2018 10:30

хорошо, тогда, возможно, ваша переменная PYTHONPATH указывает на неправильный numpy. Попробуйте использовать терминал unset PYTHONPATH перед поиском вашей среды.

gehbiszumeis 10.09.2018 10:40

Если вы хотите использовать python3, используйте pip3 вместо pip:

 pip3 install numpy

Вы также можете попробовать это в терминале:

rm -Rf env
virtualenv -p python3 env
source env/bin/activate
python3 -m pip install --upgrade pip
pip3 install numpy

Также убедитесь, что первая строка вашего скрипта

#!/usr/bin/python3

Перед этим не пишите ничего, даже комментариев.

Я снова попробовал pip3 install numpy, сказав "успешно установлен numpy-1.11.0", но у меня все еще та же ошибка при "import numpy"

LudwigVonKoopa 10.09.2018 09:25

Понятно. Ваша первая строка #! / Usr / bin / python3?

zabop 10.09.2018 09:26

Я даже не запускал файл python. Я просто набрал python3 в команде, а затем «import numpy». Но если я попытаюсь использовать скрипт, вставить #!/usr/bin/python3 import numpy в скрипт и запустить его, я получу ту же ошибку.

LudwigVonKoopa 10.09.2018 09:32

Что ж, если virtualenv -p python3 env, за которым следует исходный env / bin / activate, а затем запуск python3 также не сработал, тогда я не знаю, что не так.

zabop 10.09.2018 09:37

У меня была такая же проблема, мне потребовалось несколько часов, чтобы разобраться.

В моем случае PYTHONPATH был настроен на /usr/lib/python2.6/dist-packages/ изменение его на /Users/xxx/miniconda3/lib/python3.7/site-packages/ решило проблему. Удачи.

Я решил эту проблему, изменив версию Python на VS Code. Я работал с Python 3.7.4, теперь с 3.7.8.

Когда я установил Numpy, он хранился в папке Python3.6. Поэтому я думаю, что вы могли бы попробовать изменить путь или просто изменить версию Python

Другие вопросы по теме