Python | Virtuelle Umgebung mit pipenv
Pipenv: Python-Entwicklungsworkflow für Menschen
Pipenv ist ein Tool, das darauf abzielt, das Beste aller Verpackungswelten (Bündel, Composer, NPM, Cargo, Garn usw.) in die Python-Welt zu bringen. Windows ist in unserer Welt ein erstklassiger Bürger.
Es erstellt und verwaltet automatisch eine virtuelle Umgebung für Ihre Projekte und fügt Pakete zu Ihrer Pipfile
hinzu/entfernt sie, während Sie Pakete installieren/deinstallieren. Es generiert auch das immer wichtige Pipfile.lock
, das verwendet wird, um deterministische Builds zu erstellen.
Die Probleme, die Pipenv zu lösen versucht, sind vielschichtig:
- Sie müssen
pip
undvirtualenv
nicht mehr separat verwenden. Sie arbeiten zusammen. - Die Verwaltung einer Requirements.txt-Datei kann problematisch sein, daher verwendet
Pipenv Pipfile
undPipfile.lock
, um abstrakte Abhängigkeitsdeklarationen von der zuletzt getesteten Kombination zu trennen. - Hashes werden immer und überall verwendet. Sicherheit. Sicherheitslücken automatisch aufdecken.
- Empfehlen Sie dringend die Verwendung der neuesten Versionen von Abhängigkeiten, um Sicherheitsrisiken durch veraltete Komponenten zu minimieren.
- Geben Sie Einblick in Ihr Abhängigkeitsdiagramm (z. B.
pipenv graph
). - Optimieren Sie den Entwicklungsworkflow durch Laden von
.env
-Dateien.
Inhaltsverzeichnis
Installation
Installieren Sie pipenv
über das Kommando pip
pip install pipenv
Beispiele
Virtuelle Umgebungmit Python 3.9 erstellen
E:\> pipenv --python 3.9 E:\> type .\Pipfile [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] [dev-packages] [requires] python_version = "3.9"
Verzeichnisse der virtuellen Umgebung anzeigen
E:\> pipenv --where E:\ E:\> pipenv --venv C:\Users\workshop.virtualenvs\pipenv-python39-FzfGexFj
E:\> get-command python CommandType Name Version Source ----------- ---- ------- ------ Application python.exe 3.9.6150.… C:\Users\workshop\.virtualenvs\pipenv-python39-FzfGexFj\Scripts\python.exe
Die virtuelle Umgebung wird im Verzeichnis des Benutzer erstellt, im Unterordner .virtualenv
.
Sollte ihr Projekt die Anforderung haben, das die virtuelle Umgebung im Projektordner erstellt wird, dann gibt es hierfür zwei Möglichkeiten:
- Erstellen Sie im Projektordner einen Unterordner
.venv
- Verwenden Sie die Umgebungsvariable
PIPENV_VENV_IN_PROJECT
.
E:\> $ENV:PIPENV_VENV_IN_PROJECT=1 && pipenv --python 3.9 Creating a virtualenv for this project... Pipfile: E:\Pipfile Using D:/Python/3.9.6/python.exe (3.9.6) to create virtualenv... [=== ] Creating virtual environment...created virtual environment CPython3.9.6.final.0-64 in 262969ms creator CPython3Windows(dest=E:\.venv, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\rg\AppData\Local\pypa\virtualenv) added seed packages: pip==21.1.3, setuptools==57.1.0, wheel==0.36.2 activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator Successfully created virtual environment!
Um für alle zu Erstellenden virtuellen Umgebungen das Verzeichnis anzupassen, kann die Umgebungsvariable WORKON_HOME
verwendet werden.
Wechseln in die virtuelle Umgebung
E:\> pipenv shell Launching subshell in virtual environment... PowerShell 7.2.0-preview.6 Copyright (c) Microsoft Corporation.
Virtuelle Umgebung verlassen
Verlassen Sie die virtuelle Umgebung einfach, indem sie die neu gestartete Subshell beenden
E:\> exit
Prüfen, ob man in einer virtuellen Umgebung arbeitet
Prüfen Sie, welches Python Version verwendet wird
E:\> Get-Command python CommandType Name Version Source ----------- ---- ------- ------ Application python.exe 3.9.6150.… E:\.venv\Scripts\python.exe
Prüfen sie, welche PIP Version verwendet wird:
E:\> pip -V pip 21.1.3 from E:\.venv\lib\site-packages\pip (python 3.9)
Prüfen Sie die Umgebungsvariable PIPENV_ACTIVE
E:\>$ENV:PIPENV_ACTIVE 1
Löschen einer virtuellen Umgebung im aktuellen Verzeichnis
E:\> pipenv --rm Removing virtualenv (C:\Users\workshop\.virtualenvs\pipenv-python39-FzfGexFj)...
Installieren eines Paketes
E:\> pipenv install fastapi Installing fastapi... Adding fastapi to Pipfile's [packages]... Installation Succeeded Pipfile.lock (16c839) out of date, updating to (4f56a0)... Locking [dev-packages] dependencies... Locking [packages] dependencies... Building requirements... Resolving dependencies... Success! Updated Pipfile.lock (4f56a0)! Installing dependencies from Pipfile.lock (4f56a0)... ================================ 0/0 - 00:00:00 To activate this project's virtualenv, run pipenv shell. Alternatively, run a command inside the virtualenv with pipenv run.
Der neue Inhalt der Konfigurationsdatei Pipfile
:
E:\> type Pipfile [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] fastapi = "*" [dev-packages] [requires] python_version = "3.9"
Install all dependencies for a project (including dev)
E:\> pipenv install --dev Pipfile.lock not found, creating... Locking [dev-packages] dependencies... Locking [packages] dependencies... Updated Pipfile.lock (16c839)! Installing dependencies from Pipfile.lock (16c839)... ================================ 0/0 - 00:00:00 To activate this project's virtualenv, run pipenv shell. Alternatively, run a command inside the virtualenv with pipenv run.
Erstellen einer Lockdatei Pipenv.lock mit den aktuell installierten Releases
E:\> pipenv lock --pre Locking [dev-packages] dependencies... Locking [packages] dependencies... Updated Pipfile.lock (16c839)!
Show a graph of your installed dependencies:
E:\> pipenv graph fastapi==0.68.0 - pydantic [required: >=1.6.2,<2.0.0,!=1.8.1,!=1.8,!=1.7.3,!=1.7.2,!=1.7.1,!=1.7, installed: 1.8.2] - typing-extensions [required: >=3.7.4.3, installed: 3.10.0.0] - starlette [required: ==0.14.2, installed: 0.14.2]
Oder mit dem Ausgabeformat JSON
E:\> pipenv graph --json-tree
Überprüfen der installierten Abhängigkeiten auf Sicherheitslücken
E:\> pipenv check Checking PEP 508 requirements... Passed! Checking installed package safety... All good!
Ausführen eines Kommandos in der virtuellen Umgebung
E:\> pipenv run pip -V pip 21.1.3 from C:\Users\rg.virtualenvs\app-pipenv-tgP0nh4t\lib\site-packages\pip (python 3.9)
Ausführen eines Pip-Kommandos
E:\> pipenv run pip freeze fastapi==0.68.0 pydantic==1.8.2 starlette==0.14.2 typing-extensions==3.10.0.0
Kommandozeile
Optionen
--where Output project home information. --venv Output virtualenv information. --py Output Python interpreter information. --envs Output Environment Variable options. --rm Remove the virtualenv. --bare Minimal output. --completion Output completion (to be executed by the shell). --man Display manpage. --support Output diagnostic information for use in GitHub issues. --site-packages / --no-site-packages Enable site-packages for the virtualenv. env var: PIPENV_SITE_PACKAGES] --python TEXT Specify which version of Python virtualenv should use. --three / --two Use Python 3/2 when creating virtualenv. --clear Clears caches (pipenv, pip, and pip-tools). env var: PIPENV_CLEAR] -v, --verbose Verbose mode. --pypi-mirror TEXT Specify a PyPI mirror. --version Show the version and exit. -h, --help Show this message and exit.
Leave a Reply