{"id":381,"date":"2017-02-15T15:17:05","date_gmt":"2017-02-15T14:17:05","guid":{"rendered":"http:\/\/blog.via-internet.de\/?p=381"},"modified":"2021-08-28T11:22:48","modified_gmt":"2021-08-28T09:22:48","slug":"python-advanced-working-with-virtualenv","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2017\/02\/15\/python-advanced-working-with-virtualenv\/","title":{"rendered":"Python | Arbeiten mir virtuellen Umgebungen"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Allgemein<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Virtuelle Umgebung stellen eigenst\u00e4ndige Umgebungen dar, in denen Programme und Pakete installiert\/modifiziert werden k\u00f6nnen ohne die Betriebssystemumgebung zu ver\u00e4ndern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dadurch k\u00f6nnen zum Beispiel andere Versionen von Python oder von Python-Modulen getestet werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Technisch gesehen ist eine virtuelle Umgebung ein Verzeichnis, in dem die gew\u00fcnschten Pakete und Programme bzw. die gew\u00fcnschte Python-Version installiert ist. Entsprechend werden die notwendigen Umgebungsvariablen modifiziert: PATH, PYTHONLIB, &#8230;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Arbeiten mit einer virtuellen Umgebung<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Virtuelle Umgebung einrichten\/installieren (einmalig)<\/li><li>Virtuelle Umgebung aktivieren<\/li><li>&#8220;Arbeiten&#8221; in der Umgebung, z. B ein Python-Programm ausf\u00fchren<\/li><li>Virtuelle Umgebung deaktivieren<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichten einer virtuellen Umgebung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Zur Unterst\u00fctzung von virtuellen Umgebungen gibt es mehrere Programme\/Pakete<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>venv<\/li><li>poetry<\/li><li>pyenv<\/li><li>virtualenv<\/li><li><\/li><\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">venv<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichten einer virtuellen Umgebung<\/h2>\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=\"\">\u279c python -m venv .venv\n\n\n\u279c pip -V\npip 21.2.4 from D:\\python\\venv\\lib\\site-packages\\pip (python 3.9)\n\n\u279c &amp; .\\.venv\\Scripts\\Activate.ps1\n\n\u279c pip -V\npip 21.1.3 from d:\\venv\\.venv\\lib\\site-packages\\pip (python 3.9)<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">poetry<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Installation<\/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 poetry<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichten einer virtuellen Umgebung<\/h2>\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=\"\">$ poetry new app\nCreated package app in app\n$ cd app\n$ tree .\n.\n\u251c\u2500\u2500 README.rst\n\u251c\u2500\u2500 app\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 __init__.py\n\u251c\u2500\u2500 pyproject.toml\n\u2514\u2500\u2500 tests\n    \u251c\u2500\u2500 __init__.py\n    \u2514\u2500\u2500 test_app.py\n\n2 directories, 5 files<\/pre>\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=\"\">$ poetry config virtualenvs.create true  --local\n$ poetry config virtualenvs.in-project true --local<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"6\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ tree .\n.\n\u251c\u2500\u2500 README.rst\n\u251c\u2500\u2500 app\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 __init__.py\n\u251c\u2500\u2500 poetry.toml\n\u251c\u2500\u2500 pyproject.toml\n\u2514\u2500\u2500 tests\n    \u251c\u2500\u2500 __init__.py\n    \u2514\u2500\u2500 test_app.py\n\n2 directories, 6 files<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Inhalt der Projektdatei poetry.toml<\/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=\"\">[virtualenvs]\ncreate = true\nin-project = true<\/pre>\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=\"\">\u279c poetry install\nUpdating dependencies\nResolving dependencies...\n\nWriting lock file\n\nPackage operations: 10 installs, 0 updates, 0 removals\n\n  \u2022 Installing pyparsing (2.4.7)\n  \u2022 Installing atomicwrites (1.4.0)\n  \u2022 Installing attrs (21.2.0)\n  \u2022 Installing colorama (0.4.4)\n  \u2022 Installing more-itertools (8.8.0)\n  \u2022 Installing packaging (21.0)\n  \u2022 Installing pluggy (0.13.1)\n  \u2022 Installing py (1.10.0)\n  \u2022 Installing wcwidth (0.2.5)\n  \u2022 Installing pytest (5.4.3)\n\nInstalling the current project: app (0.1.0)<\/pre>\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=\"\">$ tree .\n.\n\u251c\u2500\u2500 README.rst\n\u251c\u2500\u2500 app\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 __init__.py\n\u251c\u2500\u2500 poetry.lock\n\u251c\u2500\u2500 poetry.toml\n\u251c\u2500\u2500 pyproject.toml\n\u2514\u2500\u2500 tests\n    \u251c\u2500\u2500 __init__.py\n    \u2514\u2500\u2500 test_app.py<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">virtualenv<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Installation des Paketes pyenv<\/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=\"\">$ brew install pyenv-virtualenv<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Anpassen der Bash Startdatei .bashrc<\/p>\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=\"\"> if which pyenv-virtualenv-init > \/dev\/null; then\n     eval \"$(pyenv virtualenv-init -)\"\n fi<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Virtuelle Umgebung einrichten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Auflisten aller zur Verf\u00fcgung stehenden Python Versionsn<\/p>\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=\"\">$ pyenv install --list<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Installation einer Python Version<\/p>\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=\"\">pyenv install 3.7.2<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Auflisten aller installierten Versionen<\/p>\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=\"\">$ pyenv versions\n* system (set by \/Users\/&lt;your username>\/.pyenv\/version)\n  2.7.14\n  3.7.1\n  3.7.2<\/pre>\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=\"\"># Python 2\n$ pyenv virtualenv 2.7.14 venv<\/pre>\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=\"\"># Python 3\n$ pyenv virtualenv 3.7.2 venv<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Umgebungen anzeigen: die letzen beiden Zeilen zeigen die soeben eingerichtete Umgebung an<\/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=\"\">$ pyenv versions\n* system (set by \/Users\/RalphG\/.pyenv\/version)\n  2.7.14\n  3.7.1\n  3.7.2\n  3.7.2\/envs\/venv\n  venv<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Alternativ: nur die virtuellen Umgebungen 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=\"\">$ pyenv virtualenvs<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Umgebung aktivieren \/ deaktivieren<\/p>\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=\"\">$ pyenv activate &lt;name>\n$ pyenv deactivate<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Umgebung testen<\/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=\"\">$ which python\n~\/pkg.virtualenv\/bin\/python<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Das Paket virtualenv<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Installation<\/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=\"\">$ pip install virtualenv<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Erstellen einer virtuellen Umgebung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Feststellen des Pfades der gew\u00fcnschten Python Version<\/p>\n\n\n\n<div class=\"wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Python 2<\/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=\"\">$ which python2\n\/usr\/local\/bin\/python2<\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Python 3<\/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=\"\">$ which python3\n\/usr\/local\/bin\/python3<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Einrichten der virtuellen Umgebung<\/p>\n\n\n\n<div class=\"wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Python 2<\/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=\"\">$ virtualenv venv2 --python \/usr\/local\/bin\/python2<\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Python 3<\/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=\"\">$ virtualenv venv3 --python \/usr\/local\/bin\/python3<\/pre>\n<\/div>\n<\/div>\n\n\n\n<h1 class=\"wp-block-heading\">Arbeiten mit einer virtuellen Umgebung<\/h1>\n","protected":false},"excerpt":{"rendered":"<p>Allgemein Virtuelle Umgebung stellen eigenst\u00e4ndige Umgebungen dar, in denen Programme und Pakete installiert\/modifiziert werden k\u00f6nnen ohne die Betriebssystemumgebung zu ver\u00e4ndern. Dadurch k\u00f6nnen zum Beispiel andere Versionen von Python oder von Python-Modulen getestet werden. Technisch gesehen ist eine virtuelle Umgebung ein Verzeichnis, in dem die gew\u00fcnschten Pakete und Programme bzw. die gew\u00fcnschte Python-Version installiert ist. Entsprechend werden die notwendigen Umgebungsvariablen modifiziert: PATH, PYTHONLIB, &#8230; Arbeiten mit einer virtuellen Umgebung Virtuelle Umgebung einrichten\/installieren (einmalig) Virtuelle Umgebung aktivieren &#8220;Arbeiten&#8221; in der Umgebung, z. B ein Python-Programm ausf\u00fchren Virtuelle Umgebung deaktivieren Einrichten einer virtuellen Umgebung Zur Unterst\u00fctzung von virtuellen Umgebungen gibt es mehrere Programme\/Pakete venv [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":496,"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-381","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein"],"jetpack_featured_media_url":"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2017\/05\/python-logo.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/381","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=381"}],"version-history":[{"count":2,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/381\/revisions"}],"predecessor-version":[{"id":8410,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/381\/revisions\/8410"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media\/496"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}