Python: Dlaczego Python nie może zaimportować modułu po instalacji z pip
Czasami po instalacji
pip install some_module
Python nie może odnaleźć modułu i pokazuje błąd ModuleNotFoundError
import some_module ModuleNotFoundError: No module named 'some_module'
Niezbyt często powodem jest, że moduł używa innej nazwy do istalacji a innej do importu. To może być całkowicie inna nazwa - jak instalacja python-some_module i import some_module - lub tylko różnica wielkości znaków - jak instalacja some_module i import SomeModule.
Ale często problem powstaje gdy ma się zainstalowane wiele wersji Python (co jest popularne pod Linux) i wtedy pip może instalować moduł dla inneh version niż wersja uruchamiana komendą python
Każda wersja Pythona ma swój własny folder z modułami ponieważ on potrzebować modułu skompilowanego specjalnie dla tej wersji.
Najpierw można sprawdzić wersje obu komend (używając duże V)
pip -V python -V
Można także sprawdzić czy nie ma podobnych komend
pip3 -V pip3.7 -V pip3.8 -V pip3.9 -V python3 -V python3.7 -V python3.8 -V python3.9 -V
Wszystkie te nazwy z liczbami pozwalają na uruchomienie kodu z konkretnie wybraną wersją. Jest to szczególnie przydatne gdy nowa wersja Pythona jest bardzo świeża i wciąż nie madziałającego potrzebnego modułu.
I wtedy można użyć pip3.9 aby mieć pewność, że moduł będzie zainstalowany dla komendy python3.9.
Ale czasami najłatwiejszą metodą jest użycie bezpośredion python do uruchomienia modułu pip i instalacji potrzebnego modułu dla poprawnego python.
python -m pip install some_module
to zawsze będziejest zawsze pip, nie pip3, pip3.7 etc.
python3 -m pip install some_module python3.7 -m pip install some_module python3.8 -m pip install some_module python3.9 -m pip install some_module
Później można spróbować wyczyścić ten bałaga i wstawić poprawy pip3.x w miejsce pip.
Na Linux (i prawdobodobnie na MacOS też) można odszukać folder z pip używając
which pip which pip3
ewentualnie
whereis pip whereis pip3
Wszystkie wersje powinny być w tym samym folderze (np.. /usr/local/bin). Wystarczy przejść do folderu z pip i pip3.x, usunąć pip i stworzyć symboliczny link do innej wersji
ln -s pip3.9 pip
# or
ln -s pip3.9 pip3
zamiast kopiować plik.
W ten sam sposób można postąpić z python3.9 i python3.
Jeśli wciąz używasz Python 2 (albo system go używa) i komenda python uruchamia Python 2 wtedy lepiej nie wstawiać python3 w miejsce python