Ugrás a lényegre

Virtuális környezet

TL;DR Tartalom
Extra feladatok

Ezek nem kötelező feladatok, csak megoldásuk közben könyebb megtanulni a dolgokat

  • Készíts el a saját környezeted, lépj bele és telepíts fel egy szerinted funky csomagot.
    Használd a kódodban.
    Végül pedig tedd egy másik virtuális környezetbe a projektet és érd el, hogy az ott is működjön a kódod.

Bevezető

Az alap könyvtáraink (modulok) mellett néha szükségünk van mások által megírt könyvtárakra is.
Erre egyik lehetőségünk, hogy az adott csomagot feltelepítjük a gépünkre és onnantól a python majd megtalálja mikor beimportáljuk a kódunkba. Másik lehetőség, hogy felépítünk egy virtuális környezetet és csak azon belülre helyezünk egyes könyvtárakat amikre szükségünk lesz.

Hogyan készítünk ilyen környezetet?

Nyissunk egy új mappát, majd pedig ott adjuk ki a python3 -m venv tutorial-env parancsot.
Ekkor keletkezik egy mappa, melyben megtalálható minden konfigurációnk ami a virtuális python környezetünkhöz kell.

Hogy átlépjünk ebbe a környezetbe, OS-től függően:

  • Windows: tutorial-env\Scripts\activate.bat
  • Linux / MacOS: source tutorial-env/bin/activate

Miután ezt kiadtuk, látni fogjuk a terminálunkban, hogy ezt jelöli is.

               ...$ source tutorial-env/bin/activate
(tutorial-env) ...$ python
Python 3.8.5 (default, Jan 27 2021, 15:41:15)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Ekkor már elég volt a python parancsot kiadnom, hogy a 3-as verzióval induljon az interpreter.
Ez azért van, mert python3-al hoztam létre a virtuális környezetem. Ha belelépek, utána már az ekkor definiált pythont fogja használni.

Csomagkezelés Pip-el

Ahhoz, hogy külső csomagokat tudjunk behozni a projektünkhöz, a pip nevezetű csomagkezelőt fogjuk használni.

Ellenőrizd, hogy elérhető-e a pip.
python -m pip --version
Ennek a parancsnak működnie kell ha benne vagy az environmentben.
Python 3 esetén a 3.4-nél nagyobb verziónál bele kerül generáláskor.

A PyPi honlapján lehet böngészni az elérhető csomagokat. Mikor ezt írtam kb. 292 ezer volt.

Na miután megtaláltunk álmaink csomagját, azt letudjuk tölteni a jelenlegi virtuális környezetünkbe.

$ pip install requests

Megtudjuk akár nézni 1-1 csomag adatait a terminálból.

$ pip show requests
Name: requests
Version: 2.25.1
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /tmp/sad/tutorial-env/lib/python3.8/site-packages
Requires: certifi, chardet, urllib3, idna
Required-by:

Mostmár elméletileg fel van telepítve a környezetünkben, de azért nézzük meg.

$ pip list
Package Version
------------- ---------
certifi 2020.12.5
chardet 4.0.0
idna 2.10
pip 20.0.2
pkg-resources 0.0.0
requests 2.25.1
setuptools 44.0.0
urllib3 1.26.3

És itt van 2.25.1-es verzióval.

Ha más gépre át akarjuk vinni a kért csomagokat, akkor akár ezt a listát ki is tudjuk exportálni és akkor később bárhol feltudjuk állítani ugyanezt a környezetet.

$ pip freeze > requirements.txt
$ cat requirements.txt
certifi==2020.12.5
chardet==4.0.0
idna==2.10
requests==2.25.1
urllib3==1.26.3

Készítettünk egy fájlt, ahol fel van listázva az összes csomag és kapcsolódó verziók. Ha csinálunk egy új virtuális környezetet, akkor ebből feltudjuk telepíteni a csomagjainkat.

$ python -m pip install -r requirements.txt
Collecting certifi==2020.12.5
Using cached certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
Collecting chardet==4.0.0
Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB)
Collecting idna==2.10
Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting requests==2.25.1
Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB)
Collecting urllib3==1.26.3
Using cached urllib3-1.26.3-py2.py3-none-any.whl (137 kB)
Installing collected packages: certifi, chardet, idna, urllib3, requests
Successfully installed certifi-2020.12.5 chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.3

És igazából ezek az alapjai a virtuális környezetnek