Osoby które chcą nauczyć się programować w Pythonie a jeszcze nie mieli z nim styczności w pewnym momencie docierają do ściany z napisami PIP oraz VENV. W tym artykule pokażę jak to wszystko okiełznać pod systemem Linux.
PIP i VENV w skrócie
PIP to narzędzie które umożliwia instalowanie paczek dla Pythona – paczki w sensie biblioteki lub też samodzielne programy, które możemy wykorzystać w naszym projekcie. VENV to tak zwane Virtual Environment czyli wirtualne środowisko dla Pythona. Jakie ono daje możliwości? Jeśli stworzymy takie wirtualne środowisko i przy pomocy pip zainstalujemy określoną paczkę to ta paczka dostępna jest tylko i wyłącznie w jednym wirtualnym środowisku. Pomaga nam to w separowaniu paczek od siebie jeśli tworzymy na jednym systemie kilka projektów na raz i zapobiega powstawaniu w naszym systemie bałaganu, dlatego też przed napisaniem pierwszego programu koniecznie zapoznaj się z VENV.
Instalacja wymaganych pakietów
W zależności od posiadanej przez Ciebie dystrybucji nazwy paczek będą się różnić – wybrałem 4 popularniejsze dystrybucje:
Ubuntu i Debian
apt install python3 python3-pip python3-virtualenv virtualenvwrapper Fedora
yum install python3 python3-pip python3-virtualenv python3-virtualenvwrapper Opensuse Tumbleweed
zypper install python3-virtualenv python3-virtualenvwrapper Tworzenie VENV
UWAGA! Poniższe operacje wykonuj jako zwykły użytkownik, nie jako root!
Skoro już wszystko mamy zainstalowane to przechodzimy do konfiguracji. Tworzymy folder w którym ma być nasz projekt, dla celów szkoleniowych niech będzie to docbox:
mkdir docbox Wchodzimy do tego katalogu:
cd ./docbox Teraz tworzymy VENV:
virtualenv -p python3 . Flaga -p oznacza interpreter pythona który zostanie wykorzystany, w naszym przypadku bazujemy oczywiście na pythonie 3. Kropka na końcu oznacza zaś, że VENV zostanie utworzone w tym katalogu w którym aktualnie się znajdujemy.
Po wykonaniu operacji powinniśmy otrzymać na konsoli mniej więcej takie komunikaty:
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /docbox/bin/python3
Also creating executable in /docbox/bin/python
Installing setuptools, pkg_resources, pip, wheel...done. Wirtualne środowisko mamy już utworzone, teraz trzeba je aktywować. Będąc cały czas w naszym katalog docbox wpisujemy polecenie :
source ./bin/activate Jeśli nasze środowisko zostało aktywowane to linia zachęty powinna wyglądać tak:
(docbox) root@bbf3b9bc0bdc:/docbox# W nawiasie widzimy nazwę naszego katalogu. Dla przykładu tak wygląda linia zachęty gdy wirtualne środowisko nie jest aktywne:
root@bbf3b9bc0bdc:/docbox# Teraz mając aktywowane wirtualne środowisko spróbujmy coś zainstalować np. pakiet o nazwie pyyaml. Wpisujemy zatem polecenie:
./bin/pip3 install pyyaml Teraz sprawdźmy, czy pyyaml jest widoczny przez Pythona w wirtualnym środowisku. Uruchamiamy go zatem:
./bin/python3 I po uruchomieniu pythona wpisujemy:
import yaml Jeśli konsola nie wyrzuci żadnego błędu to znaczy, że pakiet został załadowany. Wyjdźmy z pythona poleceniem:
exit() Oraz deaktywnujmy wirtualne środowisko. Aby to zrobić należy wpisać:
deactivate Po deaktywacji środowiska uruchamiamy Pythona i ponownie wpisujemy:
import yaml Tym razem jednak konsola zwróci nam błąd:
root@bbf3b9bc0bdc:/docbox# python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import yaml
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'yaml' Potwierdziłem w ten sposób tezę, że pakiet zainstalowany w wirtualnym środowisku jest dostępny tylko w nim.
Epilog
Jeśli chcesz, aby twój program korzystał z VENV to w pierwszej linii musisz napisać:
#!/usr/bin/env python3 Jeśli chcesz uruchomić aplikację z wirtualnego środowiska z poziomu np. crona to na samym początku musisz podać pełną ścieżkę do pythona, który znajduje się w VNEV a potem pełną ścieżkę do twojego pliku. Przykład:
/home/docbox/bin/python3 /home/docbox/main.py Źródło: Link
# Install Python 3
$ sudo apt-get install python3
# Install python3-virtualenv
$ sudo apt-get install python3-virtualenv
# You can checkout you virtualenv version
$ virtualenv --version
# Create you virtualenv in the folder you that want to
$ cd /my/path/to/my/venv/folder/container
$ virtualenv --python=/your/path/to/python3 your/virtualenv/folder/name
# Example
$ cd /myprojects
$ virtualenv --python=/usr/bin/python3.7 venv
# Check if the folder was created
$ ls
# Activate your virtualenv
$ source venv/bin/activate
# Check yuo python version on this virtualenv
python --version
# Check yuo pip version on this virtualenv
$ pip --version
# When you finish working, you can deacgtivate your virtualenv
$ deactivate






