Podstawy biblioteki venv

Biblioteka venv obecna w jako moduł wbudowany począwszy od pythona w wersji 3.3 umożliwia tworzenie wirtualnych środowisk.

Środowisko wirtualne umożliwia wykorzystanie konkretnych wersji bibliotek, niezależnie od tych, które są zainstalowane w domyślnej lokalizacji np. /usr/lib/python3.7/site-packages. Zapobiega to wystąpieniu błędów, gdy nowa, zaktualizowana wersja używanej biblioteki źle współpracuje z resztą projektu (projekt wymaga wcześniejszej wersji).

Aby utworzyć środowisko wirtualne dla bieżącego projektu należy wpisać:

python -m venv project_name/env_name

W katalogu projektu o nazwie project_name zostaje utworzony katalog zawierający wirtualne środowisko o nazwie env_name. Katalog środowiska wirtualnego zawiera kilka katalogów, m.in. katalog /bin zawierający dowiązanie do interpretera pythona, jak również plik activate służący do uruchomienia środowiska. Oprócz tego w katalogu env_name jest również katalog /lib zawierający zainstalowane moduły (site-packages).

Aby uruchomić utworzone środowisko o nazwie env_name należy wpisać w shellu:

source project_name/env_name/bin/activate

Środowisko zamykamy za pomocą polecenia deactivate.

Gdy mamy uruchomione środowisko wirtualne, to nowo instalowane biblioteki są dostępne tylko w wybranym środowisku wirtualnym. Można zapisać wymagane dla projektu biblioteki w pliku tekstowym za pomocą:

pip freeze > requirements.txt

W przypadku, gdy mamy plik requirements.txt opisujący wymagania projektu co do bibliotek i ich wersji to można doinstalować je za pomocą:

pip install -r requirements.txt

Bash prompt, venv i ArchLabs

Aby zmienić ustawienia znaku zachęty wyświetlanego przez powłokę bash w ten sposób, aby wyświetlić informację o używanym w danej chwili środowisku wirtualnym utworzonym przez bibliotekę venv należy zmodyfikować zmienną PS1 w pliku .bashrc.

W dystrybucji ArchLabs ustawienia zmiennej PS1 są modyfikowane ponadto w ukrytym katalogu .bash w katalogu użytkownika i dlatego zamiast bezpośrednio modyfikować zmienną PS1 należy zmodyfikować zmienną PROMPT_USERFMT tzn.

PROMPT_USERFMT='\nvenv:(${VIRTUAL_ENV##*/})\n\u@\h:'

Następnie należy wyeksportować utworzoną zmienną w pliku .bashrc tzn.

export $PROMPT_USERFMT

Aby przeładować ustawienia basha należy wczytać ponownie plik .bashrc tzn.

source .bashrc