Musisz sprawdzić, czy jest zainstalowany, czy nie, zanim program będzie mógł działać.
package-management
python
hubatrix
źródło
źródło
pip install
. Jeśli jest już zainstalowany, nie zainstaluje go ponownie.Odpowiedzi:
Wpisz w powłoce:
pydoc modules
.Spowoduje to wyświetlenie listy modułów i możesz grepować moduł, który chcesz.
Znalezione w stackoverflow tutaj
źródło
Należy użyć
pip
„slist
komendę grep, że tylko listy zainstalowanych pakietów (nie wszystkie moduły i ich sąsiedzi również):Jeśli nazwa_pakietu pasuje do wielu zainstalowanych pakietów, np. Wyszukiwanie,
boto
kiedybotocore
jest również zainstalowany, użycie-w
zamiast zamiast-F
może pomóc, jak sugeruje @TaraPrasadGurung. Nie podaje to dokładnego pakietu, ponieważ-w
znaki wspólne w nazwach pakietów stanowią granice słów. Więc jeśli maszrequests
irequests-cache
zainstalowałeś lubruamel.yaml
ruamel.yaml.cmd` i potrzebujesz dokładnie jednej linii danych wyjściowych , musisz zrobić coś takiego:Pamiętaj, że ponieważ
.
podczas używania pasuje do dowolnej postaci-E
, musisz uciec .¹¹ Tak, jest to konieczne, ponieważ istnieje paczka
ruamel_yaml
. Nie każdy menedżer pakietów jestpip
kompatybilny w przypadku pakietów przestrzeni nazw.źródło
-w
jako granice słów i są powszechne w nazwach pakietów. Dostaję wiele dopasowań, gdy używam Twojej sugestii przy użyciugrep -w ruamel.yaml
lubgrep -w request
pip list | grep -F mxnet-cu101
drukujemxnet-cu101 1.5.0
, ale nie dokładnie tam, gdzie jest zainstalowany. jakiś pomysł, jak uzyskać zainstalowaną ścieżkę? `Jeśli pakiet nie robi czegoś szalonego lub czasochłonnego podczas importu, możesz spróbować go zaimportować:
źródło
Stwierdziłem, że istniejące odpowiedzi są niepełne i brakuje wystarczająco dobrych przykładów. Oto rozwiązanie, na którym się zdecydowałem:
Zestawienie Github tego przykładu można znaleźć tutaj: https://gist.github.com/shaypal5/d505af9953cd86f59c750fa600ee4ba6
źródło
Możesz również użyć czegoś takiego w swoich skryptach.
Co otrzymasz, gdy pakiet nie zostanie zainstalowany.
Co otrzymasz, gdy pakiet zostanie zainstalowany.
Działa w python2 i python3, a następnie instalujesz na podstawie kodu wyjścia.
źródło
Użyłem nieco bardziej rygorystycznej wersji odpowiedzi Anthon, do użycia w skrypcie:
Pierwsze dwa grepy mają na celu usunięcie linii nagłówka z wyjścia pip3.
Wycięcie następnie wybiera tylko nazwy pakietów (odrzucając numery wersji).
Następnie końcowy grep może przeprowadzić dokładne wyszukiwanie odpowiedniego
$package_name
Jeśli pakiet zostanie znaleziony, wyświetli nazwę pakietu i zwróci kod wyjścia 0. Jeśli nie chcesz widzieć nazwy pakietu, zakończ komendę
>/dev/null
źródło
w powłoce Pythona / znaku zachęty. :
źródło
Testowane z pip3:
Kod wyjścia ($?) Byłby „0” w przypadku zainstalowania modułu, w przeciwnym razie „1”.
Grepping ma problem „fałszywych alarmów”: Wyjście a
pasuje do każdego modułu, którego nazwa zawiera „NAME”, np. również pasuje do „some_other_NAME”.
Podczas
pasuje tylko do kompletnych dopasowań.
źródło