networkx установлен, но не может импортировать: Нет модуля с именем «networkx»

#python #networkx

Вопрос:

Я установил networkx с pip помощью этой команды:

 [JohnRambo@Machine ~]$ pip install networkx
 

Просто чтобы показать вам, используя pip install networkx , он говорит, что он уже установлен:

 Requirement already satisfied: networkx in ./anaconda3/lib/python3.7/site-packages (2.6.2)
 

Однако, когда я пытаюсь импортировать networkx в python

 import networkx as nx
 

Я получил это сообщение:

 ModuleNotFoundError: No module named 'networkx'
 

Кроме того, также путем попытки с (pytest networkx)

 [JohnRambo@Machine ~]$ pytest networkx
 

Я получаю ошибку file not found: networkx , как показано ниже:

 ============================= test session starts ==============================
platform linux -- Python 3.7.7, pytest-3.8.0, py-1.6.0, pluggy-0.7.1
rootdir: /home/JohnRambo, inifile:
plugins: remotedata-0.3.0, openfiles-0.3.0, doctestplus-0.1.3, arraydiff-0.2

========================= no tests ran in 0.01 seconds =========================
ERROR: file not found: networkx
 

Есть идеи, как это исправить?

Дополнительная информация, если она может быть полезной:

 [JohnRambo@Machine ~]$ python -V
Python 3.7.7

[JohnRambo@Machine ~]$ python3 -V 
Python 3.7.7

[JohnRambo@Machine ~]$ pip --version 
pip 21.1.3 from /home/JohnRambo/anaconda3/lib/python3.7/site-packages/pip (python 3.7) 

[JohnRambo@Machine ~]$ pip3 --version 
pip 21.1.3 from /home/JohnRambo/anaconda3/lib/python3.7/site-packages/pip (python 3.7)

[JohnRambo@Machine ~]$ which python 
~/anaconda3/bin/python 

[JohnRambo@Machine ~]$ which python3 
~/anaconda3/bin/python3 

[JohnRambo@Machine ~]$ which pip 
~/anaconda3/bin/pip 

[JohnRambo@Machine ~]$ which pip3 
~/anaconda3/bin/pip3

[JohnRambo@Machine ~]$ which pytest 
~/anaconda3/bin/pytest
 

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

1. вы проверили, что pip принадлежит к той же среде python ? в случае использования which pip и which python для тестирования

2.Спасибо @Andrea! Похоже, они принадлежат к одному и тому же env: [JohnRambo@Machine ~]$ which python ~/anaconda3/bin/python [JohnRambo@Machine ~]$ which python3 ~/anaconda3/bin/python3 [JohnRambo@Machine ~]$ which pip ~/anaconda3/bin/pip [JohnRambo@Machine ~]$ which pip3 ~/anaconda3/bin/pip3

3. Привет, пожалуйста, добавьте дополнительную информацию в исходное сообщение в виде фрагментов кода, а не в виде комментариев. Спасибо

Ответ №1:

У меня есть своего рода ответ, но я не думаю, что он действительно хорош…

Следуя руководству с именем NoModuleNamed, я сначала проверил sys.executable в python

 import sys
print(sys.executable)
 

что дало это:

 /bin/python3
 

Затем я попытался установить networkx там, используя инструкции, приведенные как в руководстве с именем NoModuleNamed, так и в руководстве по установке networkx:

 [JohnRambo@Machine ~]$ /bin/python3 -m pip install networkx[default]
 

Просто для информации, я получил это (после установки):

 Requirement already satisfied: networkx[default] in ./.local/lib/python3.6/site-packages (2.5.1)
WARNING: networkx 2.5.1 does not provide the extra 'default'
Requirement already satisfied: decorator<5,>=4.3 in ./.local/lib/python3.6/site-packages (from networkx[default]) (4.4.2)

 

Теперь команда import networkx внутри python не выдает мне никаких ошибок, но

  1. если я проверю установку networkx с терминала [JohnRambo@Machine ~]$ pytest networkx , я все равно получу ERROR: file not found: networkx , и
  2. эта версия networkx-это то 2.5.1 , что мне бы хотелось 2.6 .

Как только я попытаюсь обновить networkx с помощью команды

 [JohnRambo@Machine ~]$ /bin/python3 -m pip install --upgrade networkx[default]
 

Я получил это сообщение:

 Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: networkx[default] in ./.local/lib/python3.6/site-packages (2.5.1)
WARNING: networkx 2.5.1 does not provide the extra 'default'
Requirement already satisfied: decorator<5,>=4.3 in ./.local/lib/python3.6/site-packages (from networkx[default]) (4.4.2)
 

Можно ли по-прежнему устанавливать внутри /bin/python3 или это неверная практика?

Как я могу обновить свой networkx?