Używając pip, czy można dowiedzieć się, która wersja pakietu jest obecnie zainstalowana?
Wiem o tym, pip install XYZ --upgrade
ale zastanawiam się, czy jest coś takiego pip info XYZ
. Jeśli nie, jaki byłby najlepszy sposób, aby powiedzieć, jakiej wersji aktualnie używam.
show
w pip jest propozycja polecenia: github.com/pypa/pip/issues/33Odpowiedzi:
Począwszy od pip 1.3 istnieje
pip show
polecenie.W starszych wersjach
pip freeze
igrep
powinien dobrze wykonywać pracę.źródło
save
nazwy.pip show pip
aby uzyskać informacje o wersji pipa, a niepip --version
tak, jak się spodziewałam.pip freeze
ma tę zaletę, że wyświetla poprawnie edytowalne wersje kasy VCS, podczas gdypip show
nie.Właśnie wysłałem żądanie ściągnięcia w pip z ulepszeniem Hugo Tavares powiedział:
(zaznacz jako przykład)
źródło
Pip 1.3 ma teraz także polecenie listy :
źródło
pip list
są ogólne i__version__
nie są. Widziałem takżeversion()
iget_version()
za importowany jeden.a wraz z --outdated jako dodatkowy argument otrzymasz aktualne i najnowsze wersje używanych pakietów:
Łącząc się z odpowiedzią AdamKG:
Sprawdź też narzędzia pip : https://github.com/nvie/pip-tools
źródło
Możesz także zainstalować,
yolk
a następnie uruchomić,yolk -l
co daje również niezły wynik. Oto, co dostaję dla mojego małego wirtualnego:źródło
Aby to sprawdzić, możesz użyć polecenia grep.
Przykład:
pokaże tylko wersje.
źródło
Najłatwiej jest to zrobić:
źródło
__version__
w kodzie źródłowym. Wiele pakietów nie.import
a wyjściempip freeze
.Istnieje również narzędzie o nazwie,
pip-check
które daje szybki przegląd wszystkich zainstalowanych pakietów i ich statusu aktualizacji:Sam go nie użyłem; po prostu natknąłem się na to i to SO pytanie w krótkim czasie, a ponieważ nie zostało wspomniane ...
źródło
W systemie Windows możesz wydać polecenie takie jak:
Wynik:
źródło
Funkcja python zwraca tylko wersję pakietu w formacie do odczytu maszynowego:
Przed Pythonem 3.8:
Odpowiednik bash (tutaj również wywoływany z Pythona) byłby znacznie bardziej złożony (ale bardziej solidny - patrz uwaga poniżej):
Przykładowe użycie:
Zauważ, że w obu przypadkach
pkg_name
parametr powinien zawierać nazwę pakietu w formacie zwróconym przezpip freeze
i nie używanym podczasimport
, np.scikit-learn
Niesklearn
lubFlask-Caching
nieflask_caching
.Zauważ, że chociaż wywoływanie
pip freeze
w wersji bash może wydawać się nieefektywne, tylko ta metoda okazuje się wystarczająco odporna na pakowanie osobliwości i niespójności nazewnictwa (np. Podkreślenia w porównaniu z myślnikami, małe i duże wielkie litery oraz skróty, takie jaksklearn
vsscikit-learn
).Uwaga: w złożonych środowiskach oba warianty mogą zwracać niespodziewane numery wersji, niespójne z tym, co faktycznie można uzyskać podczas
import
.Jeden z takich problemów pojawia się, gdy w podfolderze użytkownika są ukryte inne wersje pakietu
site-packages
. Jako ilustrację niebezpieczeństw związanych z korzystaniemversion()
z tej sytuacji napotkałem:Innym problemem jest posiadanie niektórych pakietów instalowanych w tym samym środowisku. Jeśli współużytkują zależności z pakietami zainstalowanymi przez pip, a wersje tych zależności różnią się, możesz uzyskać obniżenie poziomu zależności zainstalowanych przez pip.
Aby to zilustrować, najnowsza wersja
numpy
dostępna w PyPI w dniu 04-01-2020 to 1.18.0, podczas gdy w tym samym czasieconda-forge
kanał Anacondy miał tylko wersję 1.17.3numpy
jako najnowszą. Kiedy więc zainstalujeszbasemap
pakiet z conda (jako drugi), poprzednio zainstalowany pipnumpy
zostanie obniżony z wersji conda do 1.17.3, a wersja 1.18.0 stanie się niedostępna dla tejimport
funkcji. W takim przypadkuversion()
byłoby dobrze ipip freeze
/conda list
źle:źródło
importlib.metadata.version('NameOfProject')
? docs.python.org/3/library/…from importlib_metadata import version; version('Flask-Caching')
python -c "import pkg_resources; print(pkg_resources.get_distribution('lightgbm').version)"
?version()
nadal zwraca najwcześniejszą (najstarszą) wersję (2.2.3). Możesz powtórzyć ten wynik, instalując obie wersje za pomocą--user
przełącznika, ale ręcznie zachowująclightgbm-2.2.3.dist-info
folder, aby oba były razem, jak pokazano powyżej (pip normalnie usuwałby go - dopóki tego nie zrobi).Pokaż pip działa w Pythonie 3.7:
źródło
Aby to zrobić za pomocą kodu Python:
Za pomocą
importlib.metadata.version
Python ≥3,8
Python ≤ 3,7
(za pomocą
importlib_metadata.version
)Za pomocą
pkg_resources.Distribution
Podziękowania dla komentarzy sinoroc i mirekphd .
źródło
pip install
i podkreślenia - można skopiować go dosłownie z kopalni lub zmianynumpy
dobeautifulsoup4
zachowania spójności.W systemie Windows możesz
otwórz cmd i wpisz python, naciśnij enter.
wpisz import i naciśnij enter.
wpisz ._version__ i naciśnij enter.
Jak widać na zrzucie ekranu tutaj, używam tej metody do sprawdzenia wersji modułu szeregowego.
źródło
W pytaniu nie wspomniano, którego użytkownika systemu operacyjnego używa (Windows / Linux / Mac)
Ponieważ istnieje kilka odpowiedzi, które będą działać bezbłędnie na komputerach Mac i Linux.
Poniższej komendy można użyć w przypadku, gdy użytkownik próbuje znaleźć wersję pakietu python w systemie Windows.
W PowerShell użyj poniższego polecenia:
pip list | findstr <PackageName>
Przykład:-
pip list | findstr requests
Wynik :
requests 2.18.4
źródło