Jak sprawdzić, czy moduł python jest zainstalowany w systemie, czy nie: Możesz wykonać bardzo łatwy test w terminalu,
$ python -c "import math"
$ echo $?
0 # math module exists in system
$ python -c "import numpy"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named numpy
$ echo $?
1 # numpy module does not exist in system
Jak mam go zainstalować, jeśli nie jest zainstalowany
Możesz zainstalować określony moduł, pobierając odpowiednie pakiety z repozytorium, na przykład możesz zainstalowaćscipy
jako,
sudo apt-get install python-scipy ## for Python2
sudo apt-get install python3-scipy ## for Python3
Alternatywnie Możesz również zainstalować moduł python, używając python-pip
sugestii Zacka Titana w komentarzu poniżej : Aby zainstalować numpy
, możesz użyć
pip install numpy
Ostrzeżenie: Zdecydowanie zaleca się instalowanie modułów python przy użyciu tylko oficjalnego repozytorium Ubuntu i nie używanie tej pip
metody jako administratora (tj. Jako root
lub przy użyciu sudo
). W niektórych przypadkach może to spowodować, że Twój system będzie bezużyteczny przez zerwanie pytona systemowego.
Jak instalować pakiety za pomocą pip
lokalnego środowiska wirtualnego.
vpython
, musisz zainstalować jakosudo apt-get install python-visual libgtkglextmm-x11-1.2-dev
sudo pip
; może to uszkodzić python systemowy. Użyj apt-get, aby zainstalować pakiety dla systemu Python. Możesz użyćpip --user
opcji lub virtualenv, aby zainstalować pakiety Pythona dla siebie.W przypadku, gdy nie chcemy niepotrzebnie importować danego modułu (co miałoby miejsce w
try
instrukcji), możemy skorzystać zsys.modules
testów modułów, które zostały zainstalowane i zostały zaimportowane wcześniej.W kwestii powłoki pytona:
Następnie przetestuj zainstalowane moduły:
Zauważ, że tylko te moduły, które zostały zaimportowane przed
True
tym testem, dają w wyniku wszystkie inne moduły (nawet jeśli są zainstalowane)False.
Inną alternatywą
try
naimport
rachunku w konsoli Pythona jest wywołanie wbudowanąhelp()
funkcję. Nie dostarczy dokumentacji dla niezainstalowanych modułów, npWyjście bardzo długich dokumentów pomocy zainstalowanych modułów można przerwać Q.
Teraz, aby zainstalować brakujące moduły, zaleca się korzystanie z zarządzania pakietami Ubuntu (a nie z Pip Pythona), ponieważ potrzebujemy dostępu do konta root, a także, aby zapobiec zepsuciu naszego mocno zależnego od Pythona systemu. Dla danego modułu byłoby to np .:
Po instalacji możemy je dodać do
sys.modules
słownika, importując je raz.źródło
sys.modules
zawiera tylko moduły, które zostały już zaimportowane , więc nie jest to niezawodny sposób na sprawdzenie, czy moduł został zainstalowany. Najbardziej wiarygodnym testem jest użycietry/except
i pułapkiImportError
, jak już sugerowało kilka innych.sys.modules
jest całkowicie nieistotne i myślę, że jakakolwiek wzmianka o nim jest myląca. Ale może to tylko ja.sys.modules
nie ma tu żadnej pomocy.Innym sposobem jest
pkgutil
moduł. Działa zarówno z Python 2, jak i 3:Musisz zastąpić
module
nazwą swojego modułu, przykład:źródło
print()
będzie również działał dobrze w Pythonie 2; Jest traktowany jako składnia grupy z parens i nie ma żadnych skutków ubocznych. Tylko wtedy, gdy chcesz dodać wiele elementów (jak wprint('a', 'b')
tym będzie traktowany jakotuple
, w którym potrzebujeszfrom __future__ import print_function
, ale nie ma to zastosowania w tym przypadku, możesz po prostu napisać kod zgodny z przyszłością, dodając pareny (przetestowałem moje zmiany w Python 2 i 3)exit
aby można go było używać w kontekście powłoki:python -c 'import pkgutil; exit(0 if pkgutil.find_loader("math") else 2)'
Wiem, że OP początkowo poprosił o rozwiązanie po uruchomieniu Pythona, ale poza Pythonem używam
pip
. Na Ubuntu:sudo apt-get install python-pip
jeśli nie jest jeszcze zainstalowany.Następnie, aby zobaczyć, jakie moduły innych firm są dostępne, po prostu uruchom:
Lub nawet
Oba pokażą wszystkie zainstalowane moduły i ich wersje.
Jeśli moduł, którego szukasz, nie jest zainstalowany, przez większość czasu możesz go łatwo zainstalować za pomocą pip:
Jeśli nie masz pewności, czy moduł istnieje lub jak nazywa się jego PyPI, użyj
pip search
:źródło
pip show <module-name>
czy pakiet jest zainstalowany, nppip show numpy
.Możesz umieścić kod w środku
try
,except
zablokować.źródło
Aby podać inną odpowiedź, ze względu na zakończenie:
Możesz (ab) użyć tej
-m
opcji. Z strony podręcznika Pythona:Co da nam:
Ale w przypadku nieistniejących modułów da nam:
Przydałoby
grep
się dopasować do tego:Jest to nieco hackowanie, a nie to, do czego
-m
było przeznaczone; ale jest to metoda, która wymaga najmniej pisania, jeśli chcesz szybkiego testu :-)źródło
grep -q
sprawia, że przekierowanie do wartości null staje się niepotrzebne./dev/null
Przez lataW Pythonie napisałem przykład:
źródło
Sprawdzanie powłoki oneliner (przydatne do udostępniania)
Odkryłem, że aby moje udostępnianie infrastruktury ** było idempotentne, muszę być w stanie sprawdzić pakiet z powłoki w oneliner. Zbudowałem na podstawie odpowiedzi @ cuonglm. Musiałem odwrócić
1
i0
ponieważ tworzę status wyjścia zamiast drukowania łańcucha.Możesz zastąpić
sys.argv[1]
pojedynczą cudzysłowią nazwę swojego pakietu, ale w moich skryptach obsługi administracyjnej podoba mi się czytelność posiadania go na końcu.** Zdaję sobie sprawę, że wszyscy szefowie kuchni , marionetki i ansible mają wtyczki do zarządzania pakietami Pythona, ale możesz znaleźć się w sytuacji takiej jak ja, gdy używasz przestarzałej wersji i nie chcesz używać przestarzałych wtyczek.
źródło
Można również użyć
pydoc modules
, który można przefiltrować,grep
aby znaleźć określony moduł. Dane wyjściowe są wyświetlane w formacie kolumnowym. Jedyną wadą tego podejścia jest to, że obejmie on również pliki Pythona w bieżącym katalogu roboczym. Niemniej jednak używam go osobiście przez większość czasu i jest to jedno z najczęściej cytowanych podejść do tego pokrewnego pytania: https://stackoverflow.com/q/739993/3701431źródło
Z powłoki Ubuntu, domyślnie bash, tak proste jak
Przykłady
A jeśli masz wątpliwości co do sprawy (chociaż myślę, że wszystkie nazwy pakietów są zawsze małe):
źródło
W chwili pisania tego
pip show ...
wydaje się być najprostszym sposobem: https://pip.pypa.io/en/stable/reference/pip_show/Ale milczy (tzn. Nic nie zwraca), gdy pakiet nie jest zainstalowany.
źródło