Jak zarządzać projektami w Pythonie za pomocą Pipenv

Ekosystem pakietów Pythona umożliwia wykorzystanie pracy milionów innych programistów za pomocą prostego pip installpolecenia. Środowiska wirtualne Pythona pozwalają izolować projekty i ich pakiety dla siebie.

Jednak żonglowanie środowiskami i pakietami osobno może być niewygodne. Podwójnie tak, jeśli Twoje projekty mają określone wymagania dotyczące pakietu i chcesz skupić się na programowaniu zamiast na konserwacji. Potrzebujemy sposobu na wspólne zarządzanie środowiskami i pakietami. 

Pipenv łączy zarządzanie środowiskami wirtualnymi Pythona i pakietami Pythona w jednym narzędziu. Pipenv zapewnia, że ​​każdy projekt używa poprawnej wersji każdego pakietu, którego potrzebuje, i że każdy z tych pakietów ma również prawidłowe zależności.

Co więcej, Pipenv generuje listę zależności projektu, które mogą podróżować z nim, umożliwiając innym użytkownikom lub programistom skonfigurowanie tego samego projektu w ten sam sposób. Inni użytkownicy również będą musieli zainstalować Pipenv, aby poprawnie skonfigurować projekt zarządzany przez Pipenv, ale na szczęście instalacja i korzystanie z Pipenv to pestka. 

Jak działa Pipenv

Zwykle podczas tworzenia projektu w języku Python i korzystania ze środowiska wirtualnego dla jego pakietów zadaniem jest samodzielne utworzenie środowiska wirtualnego (za pomocą polecenia  py -m venv), zainstalowanie w nim zależności i ręczne śledzenie zależności.

Pipenv zapewnia sposób na wykonanie tego wszystkiego półautomatycznie. Wirtualne środowisko projektu jest tworzone i zarządzane dla Ciebie podczas instalowania pakietów za pośrednictwem interfejsu wiersza poleceń Pipenv. Zależności są śledzone i blokowane, a zależnościami związanymi z programowaniem i środowiskiem wykonawczym można oddzielnie zarządzać. Możesz także migrować z istniejących requirements.txtplików starej szkoły , więc nie musisz rozrywać projektu na części i zaczynać go od nowa, aby dobrze korzystać z Pipenv.

Zwróć uwagę, że w przeciwieństwie do innych narzędzi do zarządzania projektami w języku Python (takich jak Poetry), Pipenv nie zarządza „rusztowaniami” projektu. Oznacza to, że Pipenv nie tworzy wewnętrznej struktury katalogu projektu z testami próbnymi, fragmentami dokumentacji itp., Ale koncentruje się głównie na zarządzaniu pakietami i środowiskiem. To sprawia, że ​​Pipenv jest dobrym wyborem, jeśli chcesz, aby narzędzie skupiało się na środowiskach wirtualnych i pakietach, a nie na rozwiązaniu typu „wszystko w jednym”.

Zacznij korzystać z Pipenv

Pipenv instaluje się w taki sam sposób, jak większość innych pakietów Pythona: pip install --user pipenv. Ta --useropcja jest zalecana, aby zapobiec konfliktom Pipenv z innymi pakietami obejmującymi cały system. Powinieneś również dodać ścieżkę do katalogu binarnego bazy użytkownika do ścieżki systemowej, aby polecenia Pipenv były kierowane we właściwe miejsce.

Jeśli planujesz uczynić Pipenv spójną częścią swojego przepływu pracy, dobrym pomysłem jest również utrzymanie podstawowej instalacji Pythona na jak najmniejszym poziomie. Ta rada dotyczy większości instalacji języka Python, które korzystają ze środowisk wirtualnych.

Skonfiguruj nowy projekt z Pipenv

Aby rozpocząć zupełnie nowy projekt z Pipenv, po prostu utwórz katalog i wypełnij go plikami, które normalnie tworzysz dla projektu. Jeśli masz tendencję do tworzenia szkieletu projektu na bieżąco, możesz zacząć od pustego katalogu.

Instalowanie pakietów dla projektu nie różni się znacząco w przypadku Pipenv niż w przypadku Pip; w rzeczywistości składnia jest bardzo podobna. Otwórz konsolę w katalogu projektu i wpisz, pipenv install aby zainstalować pakiet dla projektu. Aby określić, że pakiet jest przeznaczony do programowania , użyj -dflagi. Możesz użyć pip składni do oznaczenia konkretnej wersji pakietu (np black==13.0b1.).

Podczas instalowania pakietu z Pipenv dzieją się dwie rzeczy. Najpierw Pipenv sprawdzi, czy środowisko wirtualne zostało już utworzone dla tego katalogu projektu. Jeśli tak, Pipenv zainstaluje pakiet w istniejącym środowisku wirtualnym. Jeśli nie, Pipenv utworzy środowisko wirtualne, które używa tej samej wersji języka Python, co do uruchomienia Pipenv. Zwróć uwagę, że środowisko wirtualne nie jest tworzone w samym katalogu projektu; jest tworzony w katalogu zarządzanym przez Pipenv w Twoim profilu użytkownika.

Po drugie, Pipenv zainstaluje żądane pakiety w środowisku wirtualnym. Po zakończeniu instalacji Pipenv poinformuje o wszystkim, co zrobił, w tym o ścieżce do środowiska wirtualnego, jeśli musiał je utworzyć.

Na ogół nie musisz znać ścieżki do wirtualnego środowiska, które tworzy Pipenv. Aby aktywować środowisko, po prostu przejdź do katalogu projektu i użyj go  pipenv shelldo uruchomienia nowej sesji powłoki lub użyj  pipenv run do bezpośredniego uruchomienia polecenia. Na przykład użyj  pipenv run mypydo uruchomienia wersji narzędzia wiersza poleceń mypy(zakładając, że mypynarzędzie zostało zainstalowane w środowisku wirtualnym) lub pipenv run python -m do uruchomienia modułu Pythona dostępnego w środowisku wirtualnym.

Pipenv i pliki blokujące

Zajrzyj do katalogu po zainstalowaniu pakietów za pomocą Pipenv, a zobaczysz dwa pliki Pipfilei Pipfile.lock. Oba są generowane automatycznie przez Pipenv i nie powinny być bezpośrednio edytowane, ponieważ opisują stan pakietów w projekcie.

Pipfilejest prostszy z dwóch. Po prostu wyświetla listę pakietów potrzebnych do projektu, skąd są instalowane (domyślnie PyPI) i która wersja Pythona jest potrzebna do uruchomienia wszystkiego. Pipfile.lockjest bardziej złożony. Zawiera listę każdego pakietu wraz ze szczegółami wersji i skrótami SHA-256 wygenerowanymi z pakietu. Skrót jest używany, aby upewnić się, że zainstalowane pakiety są zgodne dokładnie z tym , co określono - nie tylko z numerem wersji, ale także z uzyskaną zawartością.

Kiedy pracujesz nad projektem, który używa Pipenv do zarządzania pakietami, będziesz chciał dodać pliki Pipfilei Pipfile.lockdo repozytorium kontroli wersji dla projektu. Wszelkie zmiany wprowadzone w pakietach projektu spowodują z kolei zmianę tych plików, więc te zmiany powinny być śledzone i wersjonowane.

Użyj projektu Pipenv

Jeśli pobierzesz repozytorium źródłowe dla projektu, który używa Pipenv do zarządzania pakietami, wszystko, co musisz zrobić, to rozpakować zawartość repozytorium do katalogu i uruchomić pipenv install(nie są potrzebne nazwy pakietów). Pipenv odczyta pliki Pipfilei Pipfile.lockdla projektu, utworzy środowisko wirtualne i zainstaluje wszystkie zależności w razie potrzeby.

Na koniec, jeśli chcesz użyć Pipenv do zarządzania projektem, który obecnie używa requirements.txtpliku, po prostu przejdź do katalogu projektu i uruchom pipenv install. Pipenv wykryje plik  requirements.txt(lub możesz użyć -rflagi, aby go wskazać) i przeprowadzi migrację wszystkich wymagań do pliku Pipfile.