Virtuális környezet
- Bevezető
- Hogyan készítünk ilyen környezetet? -
-m venv
,source
- Csomagkezelés Pip-el -
pip
,install
,show
,freeze
, telepítés requirementsből
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