12.1. Wprowadzenie

Aplikacje Pythona często korzystają z pakietów i modułów, które nie wchodzą w skład biblioteki jakości. Aplikacje będą czasami potrzebowały wybranej wersji biblioteki, ponieważ urządzenie może wymagać usunięcia określonego błędu lub może być napisane z wykorzystaniem przestarzałej wersji interfejsu biblioteki.

Oznacza to, że nie będzie możliwe, aby jedna instalacja w Pythonie spełniała oczekiwania każdej aplikacji. Jeśli aplikacja A potrzebuje wersji 1.0 konkretnego modułu, ale aplikacja B potrzebuje wersji 2.0, wtedy potrzeby są w konflikcie i instalacja wersji 1.0 lub 2.0 spowoduje, że jedna z aplikacji nie będzie mogła zostać uruchomiona.

Rozwiązaniem tego problemu jest stworzenie środowiska wirtualnego, samodzielnego drzewa katalogów, które zawiera instalację Pythona dla konkretnej wersji Pythona, plus szereg dodatkowych pakietów.

Różne aplikacje mogą wtedy korzystać z różnych środowisk wirtualnych. Aby rozwiązać wcześniejszy przykład sprzecznych wymagań, aplikacja A może mieć własne środowisko wirtualne z zainstalowaną wersją 1.0, podczas gdy aplikacja B ma inne środowisko wirtualne z wersją 2.0. Jeśli aplikacja B wymaga aktualizacji biblioteki do wersji 3.0, nie może to mieć wpływu na środowisko aplikacji A.

12.2. 12.2. Tworzenie środowisk wirtualnych

Moduł służący do tworzenia i zarządzania środowiskami wirtualnymi nosi nazwę venv. venv zazwyczaj instaluje najnowszą wersję Pythona, którą po prostu masz do dyspozycji. Jeśli masz wiele wersji Pythona w swoim systemie, wybierzesz wybraną wersję Pythona uruchamiając Pythona3 lub dowolną wersję, którą chcesz.

Aby stworzyć wirtualne środowisko, wybierz katalog, w którym chciałbyś go umieścić i uruchom moduł venv jako skrypt ze ścieżką katalogu:

python3 -m tutorial-env wenv

Stworzy to katalog tutorial-env, jeśli nie istnieje, a także katalogi wewnątrz niego zawierające replikę interpretera Pythona, bibliotekę jakości i różne wspierające pliki.

Wspólną lokalizacją katalogów dla środowiska wirtualnego jest .venv. Nazwa ta utrzymuje katalog zwykle ukryty w powłoce, a tym samym z dala od niej, dając jednocześnie reputację, która wyjaśnia, dlaczego katalog ten istnieje. Zapobiega ona również kolizji z plikami o zmiennej definicji środowiska .env, które są obsługiwane przez niektóre narzędzia.

Kiedy już stworzysz wirtualne środowisko, aktywujesz je.

W systemie Windows, uruchom go:

tutorial-env \Skrypty aktywuj.bat

Na Uniksie lub MacOSie, uruchom:

źródło tutorial-env/bin/activate

(Ten skrypt jest napisany dla powłoki bash. Jeśli używasz csh lub fish shells, istnieją naprzemienne skrypty activ.csh i activ.fish, których powinieneś użyć zamiast niego).

Aktywacja środowiska wirtualnego zmieni zachętę Twojej powłoki, aby wskazać, jakiego środowiska wirtualnego używasz, i zmodyfikuje środowisko tak, aby uruchomienie Pythona dało Ci tę konkretną wersję i instalację Pythona. Na przykład:

$ source ~/envs/tutorial-env/bin/activate

(tutorial-env) $ python

Python 3.5.1 (domyślnie 6 maja 2016 r., 10:59:36)

>>> import sys

>>> sys.path

[”, “/usr/local/lib/python35.zip”,..,

“~/envs/tutorial-env/lib/python3.5/site-packages”]

>>>

12.3. Zarządzanie opakowaniami z pipą

Można instalować, aktualizować i zabierać pakiety za pomocą programu o nazwie pip. Domyślnie pip instaluje pakiety z Indeksu Pakietów Pythona, . możesz przeglądać Indeks Pakietów Pythona wchodząc do niego w swojej przeglądarce, w przeciwnym razie możesz użyć ograniczonej funkcji wyszukiwania pipa:

(tutorial-env) astronomia przeszukiwania $ pipów

skyfield – Elegancka astronomia dla Pitona

gary – astronomia galaktyczna i dynamika grawitacyjna.

novas – Biblioteka astronomiczna NOVAS Obserwatorium Marynarki Wojennej

astroobrody – Dostarcza efemeryd astronomicznych do planowania obserwacji teleskopowych

PyAstronomia – zestaw narzędzi związanych z astronomią dla Pythona.

pip zawiera szereg podpoleceń: “wyszukaj”, “zainstaluj”, “odinstaluj”, “zatrzymaj”, itp. (Pełna dokumentacja dla programu pip znajduje się w przewodniku Instalacja modułów Pythona).

Możesz zainstalować najnowszą wersję pakietu, określając jego nazwę:

(tutorial-env) $ pip install novas

Zbieranie nowości

Rozładunek novas-3.1.1.3.tar.gz (136kB)

Instalacja zebranych pakietów: novas

Uruchamianie instalacji setup.py dla Novas

Pomyślnie zainstalowane novas-3.1.1.3

Możesz również zainstalować wybraną wersję pakietu, podając nazwę pakietu, a następnie == i tym samym numer wersji:

(tutorial-env) $ pip install requests===2.6.0

Zbieranie żądań===2.6.0

Użycie zbuforowanych żądań-2.6.0-py2.py3-none-any.whl

Instalacja zebranych pakietów: żądania

Pomyślnie zainstalowane żądania-2.6.0

Jeśli wykonasz to polecenie ponownie, pip zauważy, że żądana wersja jest już zainstalowana i nic nie będzie robił. podasz specjalny numer wersji, aby nakłonić daną wersję, w przeciwnym razie możesz uruchomić pip install –upgrade, aby uaktualnić pakiet do najnowszej wersji:

(tutorial-env) $ pip install -upgrade requests

Zbieranie wniosków

Instalacja zebranych pakietów: żądania

Znaleziono istniejącą instalację: żądania 2.6.0

Odinstalowanie żądań-2.6.0:

Pomyślnie odinstalowane żądania-2.6.0

Sukcesywnie zainstalowane żądania-2.7.0

Dezinstalacja w pipie, po której następuje jedna lub więcej nazw pakietów, spowoduje usunięcie pakietów ze środowiska wirtualnego.

Pokaz w pipie wyświetli informacje o kilku konkretnych pakietach:

(tutorial-env) żądania $ pip show

Wersja metadanych: 2,0

Nazwa: wnioski

Wersja: 2.7.0

Podsumowanie: Python HTTP dla Humans.

Strona domowa: http://python-requests.org

Autor: Kenneth Reitz

E-mail autorski: me@kennethreitz.com

Licencja: Apache 2.0

Lokalizacja: /Użytkownicy/akuchling/envs/tutorial-env/lib/python3.4/site-packages

Wymaga:

Lista pipów będzie wyświetlać wszystkie pakiety zainstalowane w środowisku wirtualnym:

(tutorial-env) $ lista pipów

nowości (3.1.1.3)

zdrętwiały (1.9.2)

pipa (7.0.3)

żądania (2.7.0)

setuptools (16.0)

Pip freeze utworzy identyczną listę zainstalowanych pakietów, ale wyjście wykorzystuje format, którego oczekuje pip install. standardową konwencją jest umieszczenie tej listy w pliku require.txt:

(tutorial-env) $ pip freeze > requirements.txt

(tutorial-env) $ cat requirements.txt

novas===3.1.1.3

numpy===1.9.2

requests===2.7.0

Wymagania.txt mogą być następnie przekazane do kontroli wersji i wysłane jako część aplikacji. Użytkownicy mogą wtedy zainstalować wszystkie wymagane pakiety z instalacją -r:

(tutorial-env) $ pip install -r requirements.txt

Collecting novas===3.1.1.3 (od -r requirements.txt (linia 1))

Collecting numpy===1.9.2 (od -r requirements.txt (linia 2))

Zbieranie zgłoszeń===2.7.0 (od -r requirements.txt (linia 3))

Instalacja zebranych pakietów: novas, numpy, żądania

Uruchamianie instalacji setup.py dla Novas

Pomyślnie zainstalowany novas-3.1.1.3 numpy-1.9.2 requests-2.7.0

T