Wygląda na to, że Pipfile / Pipfile.lock mają być zamiennikami dla Requirements.txt w kontekście pakowania Pythona. Nie ma jednak zbyt wielu dokumentacji na temat tego, jak one faktycznie działają. Znalazłem ewoluujący opis pipfile w sekcji PyPi na stronie Python tutaj, ale jest dość niechlujny i nie wyjaśnia semantyki różnych sekcji pliku.
Jakieś wskazówki, jak rozumieć te pliki?
Gemfile
iGemfile.lock
ze świata Rubiego:.lock
plik ma określone wersje dla każdej zależności; ten bez tego rozszerzenia ma tylko wersje znane kontrolującym ludzi. To powiedziawszy, proszenie o wyjaśnienie czegoś, co wciąż ewoluuje i jest dalekie od dobrze zdefiniowanego, znacznie mniej znormalizowanego, jest być może nieco przedwczesne.Pipfile
irequirements.txt
polega w dużej mierze na tym, że ten pierwszy próbuje zaadoptować funkcje ze świata Rubiego, tj. Jest w stanie określić zestawy zależności dla wielu środowisk oraz z warunkami / opcjami / itp. W jednym pliku).Odpowiedzi:
Koncepcja tych plików jest prosta i analogiczna do innych już istniejących narzędzi, jeśli masz jakąś znajomość z Ruby's Bundler lub Node's Npm.
Pipenv
to narzędzie do zarządzania pakietami i środowiskiem wirtualnym, które wykorzystuje pliki Pipfile i Pipfile.lock do osiągnięcia tych celów.Pipenv obsługuje środowisko wirtualne za Ciebie w jeden domyślny standardowy sposób (nie jest już wymagana aktywacja i dezaktywacja). Poniżej kilka podstawowych informacji, które pomogą Ci zacząć, więcej informacji znajdziesz na stronie pipenv .
Pierwsze kroki
Rozpoczęcie korzystania z pipenv jest łatwe, w folderze projektu ...
... a jeśli już ma
requirements.txt
plik, wygenerujePipfile
plik z wymaganiami i folderem środowiska wirtualnego, w przeciwnym razie wygeneruje pustyPipfile
plik. Jeśli nie podobało Ci się coś, co zainstalowałeś lub zmieniłeś zdanie, po prostu wpisz ...... i jesteś gotowy. Aby aktywować środowisko wirtualne, które już wygenerował pipenv, przejdź do ...
... a Twoje wirtualne środowisko zostanie aktywowane. Opuścić środowisko ...
... i wrócisz do pierwotnej sesji terminala.
Pipfile
Plik Pipfile ma na celu określenie wymagań pakietów dla aplikacji lub biblioteki Pythona, zarówno w zakresie programowania, jak i wykonywania. Możesz zainstalować pakiet, po prostu używając ...
... i zostanie dodany jako zależność do wdrożenia i wykonania lub przy użyciu ...
... i będzie używany jako zależność od czasu programowania. Składnia pliku jest dość prosta, jak poniżej.
[[source]] # Here goes your package sources (where you are downloading your packages from). url = "https://pypi.python.org/simple" verify_ssl = true name = "pypi" [packages] # Here goes your package requirements for running the application and its versions (which packages you will use when running the application). requests = "*" flask = "*" pandas = "*" [dev-packages] # Here goes your package requirements for developing the application and its versions (which packaes you will use when developing the application) pylint = "*" wheel = "*" [requires] # Here goes your required Python version. python_version = "3.6"
Pipfile.lock
Pipfile.lock ma na celu określenie, na podstawie obecnych pakietów w Pipfile , które powinny być wykorzystane specyficzna wersja tych, unikając ryzyka automatycznie uaktualniania pakietów, które zależą od siebie i łamiąc drzewa zależności projektu.
Możesz zablokować swoje aktualnie zainstalowane pakiety za pomocą ...
... a narzędzie przeszuka folder środowiska wirtualnego, aby automatycznie wygenerować plik blokady na podstawie aktualnie zainstalowanych wersji. Składnia pliku nie jest tak oczywista, jak w przypadku Pipfile , więc ze względu na zwięzłość nie będzie tutaj wyświetlana.
źródło
[[source]]
, na przykład, czy jest to źródło pakietów, które są pobierane przez pipenv, czy coś innego? Myślę, że reszta dwóch plików jest wystarczająco oczywista.Pipfile
. Jeśli coś się zepsuje podczas aktualizacji pakietu, należy to naprawić, przeglądając historię wersji pakietu, i rzeczywiście, jeden z twórców biblioteki żądań zaleca zrobienie tego tutaj .--skip-lock
flagę, aby zmusić go do ignorowaniaPipfile.lock
pliku, zamiast zmuszać go do użycia;)Jak wyjaśnił powyżej @Charles Duffy, jest to bezpośredni odpowiednik
Gemfile
iGemfile.lock
ze świata Ruby. Więcej informacji można znaleźć poniżej.Źródła: https://medium.com/never-hop-on-the-bandwagon/gemfile-and-gemfile-lock-in-ruby-65adc918b856
źródło