{"id":8360,"date":"2021-08-28T14:31:23","date_gmt":"2021-08-28T12:31:23","guid":{"rendered":"https:\/\/via-internet.de\/blog\/?p=8360"},"modified":"2021-11-26T15:09:05","modified_gmt":"2021-11-26T14:09:05","slug":"python-virtuelle-umgebung-mit-pipenv","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2021\/08\/28\/python-virtuelle-umgebung-mit-pipenv\/","title":{"rendered":"Python | Virtuelle Umgebung mit pipenv"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Pipenv: Python-Entwicklungsworkflow f\u00fcr Menschen<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Pipenv ist ein Tool, das darauf abzielt, das Beste aller Verpackungswelten (B\u00fcndel, Composer, NPM, Cargo, Garn usw.) in die Python-Welt zu bringen. Windows ist in unserer Welt ein erstklassiger B\u00fcrger.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es erstellt und verwaltet automatisch eine virtuelle Umgebung f\u00fcr Ihre Projekte und f\u00fcgt Pakete zu Ihrer <code>Pipfile <\/code>hinzu\/entfernt sie, w\u00e4hrend Sie Pakete installieren\/deinstallieren. Es generiert auch das immer wichtige <code>Pipfile.lock<\/code>, das verwendet wird, um deterministische Builds zu erstellen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Probleme, die Pipenv zu l\u00f6sen versucht, sind vielschichtig:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Sie m\u00fcssen <code>pip <\/code>und <code>virtualenv <\/code>nicht mehr separat verwenden. Sie arbeiten zusammen.<\/li><li>Die Verwaltung einer Requirements.txt-Datei kann problematisch sein, daher verwendet <code>Pipenv Pipfile <\/code>und <code>Pipfile.lock<\/code>, um abstrakte Abh\u00e4ngigkeitsdeklarationen von der zuletzt getesteten Kombination zu trennen.<\/li><li>Hashes werden immer und \u00fcberall verwendet. Sicherheit. Sicherheitsl\u00fccken automatisch aufdecken.<\/li><li>Empfehlen Sie dringend die Verwendung der neuesten Versionen von Abh\u00e4ngigkeiten, um Sicherheitsrisiken durch veraltete Komponenten zu minimieren.<\/li><li>Geben Sie Einblick in Ihr Abh\u00e4ngigkeitsdiagramm (z. B. <code>pipenv graph<\/code>).<\/li><li>Optimieren Sie den Entwicklungsworkflow durch Laden von <code>.env<\/code>-Dateien.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"installation\">Installation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Installieren Sie <code>pipenv <\/code>\u00fcber das Kommando <code>pip<\/code><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pip install pipenv<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"beispiele\">Beispiele<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"virtuelle-umgebungmit-python-3-9-erstellen\">Virtuelle Umgebungmit Python 3.9 erstellen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv --python 3.9\n\nE:\\> type .\\Pipfile\n[[source]]\nurl = \"https:\/\/pypi.org\/simple\"\nverify_ssl = true\nname = \"pypi\"\n\n[packages]\n\n[dev-packages]\n\n[requires]\npython_version = \"3.9\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verzeichnisse der virtuellen Umgebung anzeigen<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv --where\nE:\\\nE:\\> pipenv --venv\nC:\\Users\\workshop.virtualenvs\\pipenv-python39-FzfGexFj<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> get-command python\n\nCommandType     Name                                               Version    Source\n-----------     ----                                               -------    ------\nApplication     python.exe                                         3.9.6150.\u2026 C:\\Users\\workshop\\.virtualenvs\\pipenv-python39-FzfGexFj\\Scripts\\python.exe<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die virtuelle Umgebung wird im Verzeichnis des Benutzer erstellt, im Unterordner <code>.virtualenv<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sollte ihr Projekt die Anforderung haben, das die virtuelle Umgebung im Projektordner erstellt wird, dann gibt es hierf\u00fcr zwei M\u00f6glichkeiten:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Erstellen Sie im Projektordner einen Unterordner <code>.venv<\/code><\/li><li>Verwenden Sie die Umgebungsvariable  <code>PIPENV_VENV_IN_PROJECT<\/code>.<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> E:\\> $ENV:PIPENV_VENV_IN_PROJECT=1 &amp;&amp; pipenv --python 3.9\nCreating a virtualenv for this project...\nPipfile: E:\\Pipfile\nUsing D:\/Python\/3.9.6\/python.exe (3.9.6) to create virtualenv...\n[=== ] Creating virtual environment...created virtual environment CPython3.9.6.final.0-64 in 262969ms\n  creator CPython3Windows(dest=E:\\.venv, clear=False, no_vcs_ignore=False, global=False)\n  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\\Users\\rg\\AppData\\Local\\pypa\\virtualenv)\n    added seed packages: pip==21.1.3, setuptools==57.1.0, wheel==0.36.2\n  activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator\n\nSuccessfully created virtual environment!<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Um f\u00fcr alle zu Erstellenden virtuellen Umgebungen das Verzeichnis anzupassen, kann die Umgebungsvariable <code>WORKON_HOME<\/code> verwendet werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"wechseln-in-die-virtuelle-umgebung\">Wechseln in die virtuelle Umgebung<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv shell\nLaunching subshell in virtual environment...\nPowerShell 7.2.0-preview.6\nCopyright (c) Microsoft Corporation.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"virtuelle-umgebung-verlassen\">Virtuelle Umgebung verlassen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Verlassen Sie die virtuelle Umgebung einfach, indem sie die neu gestartete Subshell beenden<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> exit<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"prufen-ob-man-in-einer-virtuellen-umgebung-arbeitet\">Pr\u00fcfen, ob man in einer virtuellen Umgebung arbeitet<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pr\u00fcfen Sie, welches Python Version verwendet wird<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> Get-Command python\n\nCommandType     Name                Version    Source\n-----------     ----                -------    ------\nApplication     python.exe          3.9.6150.\u2026 E:\\.venv\\Scripts\\python.exe<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pr\u00fcfen sie, welche PIP Version verwendet wird:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pip -V\npip 21.1.3 from E:\\.venv\\lib\\site-packages\\pip (python 3.9)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pr\u00fcfen Sie die Umgebungsvariable <code>PIPENV_ACTIVE<\/code><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\>$ENV:PIPENV_ACTIVE\n1<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"loschen-einer-virtuellen-umgebung-im-aktuellen-verzeichnis\">L\u00f6schen einer virtuellen Umgebung im aktuellen Verzeichnis<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv --rm\nRemoving virtualenv (C:\\Users\\workshop\\.virtualenvs\\pipenv-python39-FzfGexFj)...<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installieren-eines-paketes\">Installieren eines Paketes<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv install fastapi\nInstalling fastapi...\nAdding fastapi to Pipfile's [packages]...\nInstallation Succeeded\nPipfile.lock (16c839) out of date, updating to (4f56a0)...\nLocking [dev-packages] dependencies...\nLocking [packages] dependencies...\n           Building requirements...\nResolving dependencies...\nSuccess!\nUpdated Pipfile.lock (4f56a0)!\nInstalling dependencies from Pipfile.lock (4f56a0)...\n  ================================ 0\/0 - 00:00:00\nTo activate this project's virtualenv, run pipenv shell.\nAlternatively, run a command inside the virtualenv with pipenv run.<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der neue Inhalt der Konfigurationsdatei <code>Pipfile<\/code>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"8\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> type Pipfile\n[[source]]\nurl = \"https:\/\/pypi.org\/simple\"\nverify_ssl = true\nname = \"pypi\"\n\n[packages]\nfastapi = \"*\"\n\n[dev-packages]\n\n[requires]\npython_version = \"3.9\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-all-dependencies-for-a-project-including-dev\">Install all dependencies for a project (including dev)<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv install --dev\nPipfile.lock not found, creating...\nLocking [dev-packages] dependencies...\nLocking [packages] dependencies...\nUpdated Pipfile.lock (16c839)!\nInstalling dependencies from Pipfile.lock (16c839)...\n  ================================ 0\/0 - 00:00:00\nTo activate this project's virtualenv, run pipenv shell.\nAlternatively, run a command inside the virtualenv with pipenv run.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"erstellen-einer-lockdatei-pipenv-lock-mit-den-aktuell-installierten-releases\">Erstellen einer Lockdatei  Pipenv.lock mit den aktuell installierten Releases<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv lock --pre\nLocking [dev-packages] dependencies...\nLocking [packages] dependencies...\nUpdated Pipfile.lock (16c839)!<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"show-a-graph-of-your-installed-dependencies\">Show a graph of your installed dependencies:<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv graph\nfastapi==0.68.0\n  - pydantic [required: >=1.6.2,&lt;2.0.0,!=1.8.1,!=1.8,!=1.7.3,!=1.7.2,!=1.7.1,!=1.7, installed: 1.8.2]\n    - typing-extensions [required: >=3.7.4.3, installed: 3.10.0.0]\n  - starlette [required: ==0.14.2, installed: 0.14.2]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Oder mit dem Ausgabeformat JSON<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> E:\\> pipenv graph --json-tree<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"uberprufen-der-installierten-abhangigkeiten-auf-sicherheitslucken\">\u00dcberpr\u00fcfen der installierten Abh\u00e4ngigkeiten auf Sicherheitsl\u00fccken<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv check\nChecking PEP 508 requirements...\nPassed!\nChecking installed package safety...\nAll good!<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ausfuhren-eines-kommandos-in-der-virtuellen-umgebung\">Ausf\u00fchren eines Kommandos in der virtuellen Umgebung<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv run pip -V\npip 21.1.3 from C:\\Users\\rg.virtualenvs\\app-pipenv-tgP0nh4t\\lib\\site-packages\\pip (python 3.9)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ausfuhren-eines-pip-kommandos\">Ausf\u00fchren eines Pip-Kommandos<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">E:\\> pipenv run pip freeze\nfastapi==0.68.0\npydantic==1.8.2\nstarlette==0.14.2\ntyping-extensions==3.10.0.0<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"kommandozeile\">Kommandozeile<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"optionen\">Optionen<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">--where            Output project home information.\n--venv             Output virtualenv information.\n--py               Output Python interpreter information.\n--envs             Output Environment Variable options.\n--rm               Remove the virtualenv.\n--bare             Minimal output.\n--completion       Output completion (to be executed by the shell).\n\n--man              Display manpage.\n--support          Output diagnostic information for use in GitHub issues.\n\n--site-packages \/ --no-site-packages\n                   Enable site-packages for the virtualenv.\n                   env var: PIPENV_SITE_PACKAGES]\n\n--python TEXT      Specify which version of Python virtualenv should use.\n\n--three \/ --two    Use Python 3\/2 when creating virtualenv.\n--clear            Clears caches (pipenv, pip, and pip-tools).\n                   env var: PIPENV_CLEAR]\n\n-v, --verbose      Verbose mode.\n--pypi-mirror TEXT Specify a PyPI mirror.\n--version          Show the version and exit.\n-h, --help         Show this message and exit.<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Pipenv: Python-Entwicklungsworkflow f\u00fcr Menschen Pipenv ist ein Tool, das darauf abzielt, das Beste aller Verpackungswelten (B\u00fcndel, Composer, NPM, Cargo, Garn usw.) in die Python-Welt zu bringen. Windows ist in unserer Welt ein erstklassiger B\u00fcrger. Es erstellt und verwaltet automatisch eine virtuelle Umgebung f\u00fcr Ihre Projekte und f\u00fcgt Pakete zu Ihrer Pipfile hinzu\/entfernt sie, w\u00e4hrend 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\u00f6sen versucht, sind vielschichtig: Sie m\u00fcssen pip und virtualenv nicht mehr separat verwenden. Sie arbeiten zusammen. Die Verwaltung einer Requirements.txt-Datei kann problematisch sein, daher [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-8360","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/8360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/comments?post=8360"}],"version-history":[{"count":14,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/8360\/revisions"}],"predecessor-version":[{"id":8606,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/8360\/revisions\/8606"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=8360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=8360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=8360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}