Instalacja Python 3, PIP oraz VENV na Linuksie

in #polish6 years ago (edited)

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.

1.png

Źródło

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ła

Doświadczenia własne.

Wsparcie

Podobało się? Obserwuj i wspieraj

Sort:  

This post is supported by $1.81 @tipU upvote funded by @cardboard :)
@tipU voting service guide | For investors.

Bardzo fajnie, że dzielisz się wiedzą - ale mam tylko jedną uwagę. Nie uczmy nikogo złych nawyków - a normalna praca na użytkowniku root (wszystko co nie jest czynnością administracyjną dla danego systemu) to zły nawyk.

Wiem, że się czepiam ;-P. Bez urazy :-).

Poradnik był wykonywany w kontenerze dockera, stąd też ten root ;-)

Ogólnie masz rację, jak najmniej roota.

Ach, jasne! Stąd ten dziwny prompt :-D.

!tipuvote 4 :)

This spam is courtesy of @fulltimegeek! A real piece of shit who flags manual curation projects like @themadcurator because he's a spiteful cunt!!!