Alegerea instrumentului de mediu Python potrivit pentru următorul proiect

Alegerea instrumentului de mediu Python potrivit pentru următorul proiect

Nodul sursă: 1992171

Introducere

Crearea unui mediu este primul pas Piton dezvoltare și este esențial deoarece gestionarea pachetelor poate fi o provocare cu Python. Și, de asemenea, Python este un limbaj flexibil care poate fi aplicat în diferite domenii, inclusiv programare științifică, DevOps, automatizare și dezvoltare web. Având în vedere lungimea și lățimea aplicațiilor terță parte, mediul dvs. global va deveni o mizerie umflată în cel mai scurt timp.

Este un fapt binecunoscut în comunitatea de dezvoltatori că Python este prost la gestionarea pachetelor. Dacă există o meme care să o rezuma, aceasta ar fi;

Mediul Python
Mediul Python

Deci, care este soluția? Ei bine, pentru a evita orice capcane legate de gestionarea dependenței, sunt folosite medii virtuale. Mediile virtuale sunt o necesitate dacă faceți orice dezvoltare în Python.

Există o mulțime de instrumente de mediu virtual, fiecare cu caracteristici unice. În acest articol, vom discuta unele dintre cele mai populare medii Python, caracteristicile lor unice și deficiențele și, de asemenea, vom învăța cum să configurați medii virtuale folosind aceste instrumente.

În funcție de preferințele dvs., puteți utiliza oricare dintre aceste instrumente pentru a vă configura mediul de dezvoltare. Dar înainte de asta, să vedem câteva beneficii ale utilizării mediilor virtuale.

Acest articol a fost publicat ca parte a Blogathonul științei datelor.

Cuprins

De ce să folosiți mediile virtuale?

Medii virtuale Python

Există mai multe avantaje ale utilizării mediilor virtuale:

  • Managementul dependenței: Gestionarea pachetelor în timp ce construiți orice poate fi mai dificilă. Mediile de dezvoltare pot facilita gestionarea pachetelor. Putem menționa în mod explicit versiunile bibliotecilor, iar mediul de dezvoltare se va asigura că dependențele sunt instalate și configurate.
  • Reproductibilitate: Mediile virtuale facilitează recrearea aceluiași mediu de dezvoltare pe mai multe mașini. Se asigură că toți colaboratorii de proiect folosesc aceleași dependențe și instrumente. Astfel, reducând riscurile de spargere a codului și erori.
  • Depanare: Izolând mediul, puteți identifica mai ușor ce pachete sau configurații cauzează probleme și le puteți rezolva fără a afecta alte părți ale sistemului.
  • Securitate: Izolarea mediilor de dezvoltare va asigura că orice vulnerabilitate de securitate nu afectează alte părți ale sistemului.
  • Izolare: Codul dvs. este izolat de mediul global. Orice pachete pe care le instalați vor rămâne în mediul virtual. Astfel, nu poluați mediul dvs. global Python. Linux și Mac vin cu o instalare Python implicită și pachete aferente. instalarea directă a pachetelor poate duce la probleme cu care nu doriți să le rezolvați. Prin urmare, este crucial să folosiți dependențe virtuale pentru a izola diferite instalări.

În general, este esențial să folosiți medii virtuale pentru a crea un spațiu consistent, stabil și sigur pentru dezvoltarea de software.

Există o mulțime de instrumente pentru gestionarea mediilor virtuale în Python. În acest articol, vom discuta unele dintre instrumentele de mediu virtual utilizate pe scară largă, cum ar fi,

  1. Python venv
  2. Pipenv
  3. pyenv
  4. Poezie

Mediul Venv Python

Python venv este cel mai popular instrument de mediu virtual de acolo. Vine cu instalarea Python3. Deci, dacă utilizați Python3, nu trebuie să instalați nimic. Venv ajută la crearea de medii virtuale ușoare. Venv simplifică crearea și gestionarea mediilor.

Pentru a crea un tip de mediu virtual,

python -m venv <env name>

Activați mediul

source <path to env folder>/bin/activate

Odată activat, puteți instala orice pachet folosind pip. Pentru a vedea pachetele instalate și tipul de versiuni ale acestora,

pip freeze

Salvați-l ca tip de fișier text,

pip freeze > requirements.txt

Pentru a închide mediul, tastați comanda dezactivare.

pyenv

Există momente când aveți nevoie de mai multe Instalări Python în sistemul dumneavoastră. De exemplu, atunci când trebuie să testați dacă o caracteristică funcționează în diferite versiuni de Python. Dar instalarea mai multor versiuni Python ar putea rupe codul existent, ceea ce nimeni nu-l dorește. Cea mai bună soluție este să folosiți un instrument precum Pyenv. Pyenv vă permite să instalați diferite versiuni Python în sistemul dvs. fără a provoca certuri.

Instalarea și configurarea Pyenv ar putea fi puțin dificilă. Pyenv necesită instalarea unor dependențe pe măsură ce se construiește din sursă. Dacă sunteți pe Ubuntu/Debian, executați comanda de mai jos

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

Pentru CentOS/Fedora/RHEL,

sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite
sqlite-devel openssl-devel xz xz-devel libffi-devel

Acum, sunteți gata să instalați Pyenv.

curl pyenv.run | bash

Acum, adăugați Pyenv la calea din fișierul .bashrc. Deschideți fișierul folosind orice editor doriți. Vom folosi „vi” pentru a deschide și edita fișierul.

vi ~/.bashrc

Tastați litera „o” pentru a intra în modul INSERT. Acum, copiați și lipiți următorul cod și reporniți shell-ul.

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)" eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

Acum puteți instala orice versiune specifică de Python în sistemul dvs.

pyenv instalează python 3.8.15

Verificați versiunile Python din sistemul dvs

$ pyenv versions * system (set by /home/sunil/.pyenv/version) 3.8.15 3.10.4

Puteți vedea că am două versiuni diferite de Python instalate. De asemenea, puteți seta mediile dvs. globale și locale Python rulând următoarea comandă.

$ pyenv global 3.8.15
$ python --version
Python 3.8.15

Configurați Direnv

Direnv este un astfel de instrument care vă poate îmbunătăți productivitatea ca dezvoltator Python. Amintiți-vă, Cât de des ați uitat să activați mediul virtual și să începeți să executați coduri? Ei bine, cred că ni s-a întâmplat celor mai mulți dintre noi. Aici intervine Direnv. Cu Pyenv și Direnv configurate, nu trebuie să vă activați mediul virtual în mod explicit, Direnv se va ocupa de acest lucru în numele dvs.

Deci, cum configuram Direnv pentru mediul nostru?

Să începem prin a instala Direnv. Pentru a instala într-un tip de distribuție Debian/Ubuntu,

sudo apt-get direnv

Dacă utilizați tipul de distribuție bazat pe Fedora/CentOS/RedHat,

sudo dnf install direnv

Acum, adăugați acest fișier în fișierul dvs. .bashrc.

eval "$(direnv hook bash)"

Adăugați un fișier nou numit .direnvrc în folderul de acasă (~) cu acest conținut:

use_python() { local python_root=$(pyenv root)/versions/$1 load_prefix "$python_root" if [[ -x "$python_root/bin/python" ]]; then layout python "$python_root/bin/python" else echo "Error: $python_root/bin/python can't be executed." exit fi
}

Creați un mediu virtual pentru proiectul dvs. adăugând un fișier numit .envrc în folderul părinte al depozitului de proiect cu acest conținut:

use python 3.10.4 #or any version you have installed in pyenv

Acum tastați

direnv allow

Reporniți sau creați un nou shell și „cd” în el și vedeți magia. Mediul dumneavoastră virtual se va porni automat. Veți vedea așa ceva.

source "/home/sunil/Django/Feed App/.direnv/python-3.10.4/bin/activate"
direnv: loading ~/Django/Feed App/.envrc
direnv: using python 3.10.4
direnv: export +CPATH +LD_LIBRARY_PATH +LIBRARY_PATH +MANPATH +PKG_CONFIG_PATH +VIRTUAL_ENV ~PATH

Pentru a dezactiva mediul, mutați-vă din directorul de proiect. Atât de convenabil.

Mediul Pipenv Python

Următorul candidat pe această listă este Pipenv. Pipenv încearcă să aducă cele mai bune dintre toți managerii de pachete, cum ar fi yarn, npm, cargo, composer, etc. Unul dintre avantajele utilizării Pipenv este că nu trebuie să utilizați pip și venv separat. În afară de aceasta, Pipenv își propune să rezolve mai multe probleme folosind fișierele requirements.txt, cum ar fi dependențe imbricate sau pachete cu subdependențe multiple, care ar putea cauza erori mai târziu în timpul recreării mediului de cod.

Pipenv folosește Pipfile și un Pipfile. fișier de blocare pentru a rezolva probleme legate de dependențe complexe. Un pipfile este generat automat atunci când creați un mediu virtual cu Pipenv. Este similar cu un fișier requirements.txt. Este un fișier de specificații la nivel înalt pentru proiect și se actualizează în timp real. Fișierul de blocare pipfile specifică versiunile exacte ale dependențelor. Fișierul de blocare asigură că pachetele instalate au aceleași versiuni în toate sistemele.

Configurarea este ușoară, instalați Pipenv prin pip,

pip install pipenv

Dacă recreezi un mediu, tastați

pipenv install -

Acest lucru va instala toate dependențele enumerate în fișierul de blocare într-un mediu virtual. Pentru a activa tipul shell:

pipenv shell

Pentru a ieși din shell, tastați exit. O altă caracteristică care face din Pipenv o opțiune mai bună este că puteți vedea graficul de dependență al pachetelor instalate. Pentru a vizualiza tipul de grafic de dependență, „graf pipenv”.

(temp) [[email protected] temp]$ pipenv graph
numpy==1.24.2
requests==2.28.2 - certifi [required: >=2017.4.17, installed: 2022.12.7] - charset-normalizer [required: >=2,<4, installed: 3.0.1] - idna [required: >=2.5,<4, installed: 3.4] - urllib3 [required: >=1.21.1,<1.27, installed: 1.26.14]

Pentru a afla mai multe despre Pipenv, consultați-le documentația oficială.

Poezie Mediu Python

Poezia este un alt instrument modern Python pentru gestionarea dependențelor și ambalarea fișierului Python. Oferă o modalitate unificată pentru gestionarea, versiunea, împachetarea și publicarea pachetelor Python. La fel cum Venv folosește requirements.txt și Pipenv folosește Pipfile. lock, Poetry folosește pyproject. toml pentru a fixa dependențe. Poezia va folosi pyproject-ul. toml pentru a rezolva dependențele.

Pentru a instala Poetry, rulați scriptul de mai jos;

curl -sSL https://install.python-poetry.org | POETRY_HOME=/etc/poetry python3 -

Pentru a începe un nou proiect cu Poetry, rulați scriptul de mai jos;

poetry new project

Aceasta va crea directorul proiectului cu următoarea structură de foldere,

.
├── project
│ └── __init__.py
├── pyproject.toml
├── README.md
└── tests └── __init__.py

După cum puteți vedea, are folderul de proiect cu __init__.py, A pyproject. toml fișier din care să construiți dependențe, un fișier README.md pentru specificarea informațiilor referitoare la proiect și un director de testare pentru testarea unitară.

Un fișier de proiect Py (vezi mai jos) constă din trei secțiuni, prima secțiune ([instrument. poezie]) conține câteva informații generale. A doua parte ([instrument. poezie. dependențe]) fixează versiunea Python și dependențele. Și secțiunea finală ([build-system]) specifică sistemul de construire. Consultați oficialul lor documentaţie pentru informatii in acest sens.

[tool.poetry]
name = "myproject"
version = "0.1.0"
description = ""
authors = ["sunilkumardash9 <[email protected]>"]
readme = "README.md" [tool.poetry.dependencies]
python = "^3.10"
requests = "^2.28.2" [build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

Instalarea unei biblioteci este simplă. Dacă construiți dintr-un depozit cu un fișier proiect py, poetry va instala dependențele care se referă la fișierul proiect py.

#installing a single library
poetry add requests.py #installing dependencies from pyproject.toml
poetry install -

Aceasta va adăuga un fișier de blocare cu poezie generat automat în directorul proiectului. Odată ce există un fișier de blocare, de data viitoare Poetry va instala dependențe care se referă la fișierul de blocare.

Pentru a rula un script, puteți folosi următoarea comandă de poezie;

poetry run python main.py

De exemplu, creați un fișier main.py în directorul proiectului și adăugați aceste linii la acesta.

import requests # Make an HTTP GET request to the API
response = requests.get('https://api.ipify.org') # Get the IP address from the response text
ip_address = response.text.strip() print(f"External IP Address: {ip_address}")

Acum, rulați fișierul folosind comanda de mai sus pentru a obține rezultatul.

Dacă nu doriți să utilizați comanda Poetry pentru a rula fișiere, porniți un mediu virtual cu coaja poeziei comanda. Acest lucru va porni un mediu virtual și puteți lucra în el ca de obicei.

Concluzie

Dezvoltarea într-un mediu virtual va face codul dvs. stabil, consecvent și fiabil pe parcursul ciclului de viață al dezvoltării produsului. Este una dintre cele mai importante părți ale vieții unui dezvoltator Python. Dacă un proiect folosește deja un instrument de mediu virtual, ar fi mai bine să rămâneți cu acesta. Dar dacă începeți un nou proiect, va fi mai bine să mergeți cu Pipenv și Poetry.

Pentru a rezuma, iată principalele concluzii din articol,

  • Am învățat care sunt beneficiile utilizării mediilor virtuale.
  • Am aflat despre caracteristicile distinctive ale instrumentelor populare de mediu Python, cum ar fi Venv, pyenv, Pipenv și Poetry.
  • De asemenea, am învățat cum să creăm și să gestionăm medii virtuale folosind aceste instrumente.

Deci, totul era despre diferite medii Python open-source pentru a vă eficientiza proiectele Python.

Sper că ați găsit articolul de ajutor. Urmăriți-mă Twitter pentru mai multe lucruri legate de dezvoltare și învățare automată.

Media prezentată în acest articol nu este deținută de Analytics Vidhya și este utilizată la discreția Autorului. 

Timestamp-ul:

Mai mult de la Analize Vidhya