Python Language
Zastosowanie modułu „pip”: Menedżer pakietów PyPI
Szukaj…
Wprowadzenie
Czasami może być konieczne użycie menedżera pakietów pip w Pythonie, np. kiedy niektóre importy mogą wywołać błąd ImportError
i chcesz obsłużyć wyjątek. Jeśli rozpakujesz w systemie Windows Python_root/Scripts/pip.exe
środku jest przechowywany plik __main__.py
, w którym importowana jest klasa main
z pakietu pip
. Oznacza to, że pakiet pip jest używany za każdym razem, gdy używasz pliku wykonywalnego pip. Aby użyć pip jako pliku wykonywalnego, patrz: pip: Menedżer pakietów PyPI
Składnia
- pip. <funkcja | atrybut | klasa> gdzie funkcja jest jedną z:
- autouzupełnienie()
- Uzupełnianie poleceń i opcji dla głównego parsera opcji (i opcji) i jego podkomend ((i opcji)). Włącz, pobierając jeden ze skryptów powłoki ukończenia (bash, zsh lub fish).
- check_isolated (args)
- param args {list}
- zwraca {boolean}
- create_main_parser ()
- zwraca {obiekt pip.baseparser.ConfigOptionParser}
- main (argument = brak)
- param args {list}
- zwraca {liczba całkowita} Jeśli nie zakończy się niepowodzeniem, zwraca 0
- parseopts (args)
- param args {list}
- get_installed_distribution ()
- zwraca {lista}
- get_similar_commands (nazwa)
- Autokorekta nazwy polecenia.
- nazwa parametru {ciąg}
- zwraca {boolean}
- get_summaries (order = True)
- Daje posortowane krotki (nazwa polecenia, podsumowanie polecenia).
- get_prog ()
- zwraca {ciąg}
- dist_is_editable (dist)
- Czy dystrybucja jest instalacją do edycji?
- param dist {object}
- zwraca {boolean}
- polecenie_dykt
- atrybut {słownik}
- autouzupełnienie()
Przykładowe użycie poleceń
import pip
command = 'install'
parameter = 'selenium'
second_param = 'numpy' # You can give as many package names as needed
switch = '--upgrade'
pip.main([command, parameter, second_param, switch])
Obowiązkowe są tylko potrzebne parametry, więc zarówno pip.main(['freeze'])
i pip.main(['freeze', '', ''])
są dopuszczalne.
Instalacja wsadowa
Możliwe jest przekazanie wielu nazw pakietów w jednym wywołaniu, ale jeśli jedna instalacja / aktualizacja zakończy się niepowodzeniem, cały proces instalacji zatrzymuje się i kończy na statusie „1”.
import pip
installed = pip.get_installed_distributions()
list = []
for i in installed:
list.append(i.key)
pip.main(['install']+list+['--upgrade'])
Jeśli nie chcesz zatrzymać się, gdy niektóre instalacje zakończą się niepowodzeniem, wywołaj instalację w pętli.
for i in installed:
pip.main(['install']+i.key+['--upgrade'])
Obsługa wyjątku ImportError
Gdy używasz pliku python jako modułu, nie zawsze musisz sprawdzać, czy pakiet jest zainstalowany, ale nadal jest przydatny dla skryptów.
if __name__ == '__main__':
try:
import requests
except ImportError:
print("To use this module you need 'requests' module")
t = input('Install requests? y/n: ')
if t == 'y':
import pip
pip.main(['install', 'requests'])
import requests
import os
import sys
pass
else:
import os
import sys
print('Some functionality can be unavailable.')
else:
import requests
import os
import sys
Wymuś instalację
Wiele pakietów, na przykład w wersji 3.4, działa dobrze w wersji 3.6, ale jeśli nie ma dystrybucji dla konkretnej platformy, nie można ich zainstalować, ale istnieje obejście. W plikach .whl (zwanych kołami) konwencja nazewnictwa decyduje, czy można zainstalować pakiet na określonej platformie. Na przykład. scikit_learn‑0.18.1‑cp36‑cp36m‑win_amd64.whl
[nazwa_pakietu] - [wersja] - [interpreter pythona] - [interpreter pythona] - [system operacyjny] .whl. Jeśli nazwa pliku koła zostanie zmieniona, więc platforma się zgadza, pip próbuje zainstalować pakiet, nawet jeśli wersja platformy lub python nie jest zgodna. Usunięcie platformy lub interpretera z nazwy spowoduje błąd w najnowszej wersji modułu pip kjhfkjdf.whl is not a valid wheel filename.
.
Alternatywnie plik .whl można rozpakować za pomocą archiwizatora jako 7-zip. - Zwykle zawiera folder meta dystrybucji i folder z plikami źródłowymi. Te pliki źródłowe można po prostu rozpakować do katalogu site-packges
chyba że koło zawiera skrypt instalacyjny, jeśli tak, należy go najpierw uruchomić.