Python | Arbeiten mir virtuellen Umgebungen

Allgemein

Virtuelle Umgebung stellen eigenständige Umgebungen dar, in denen Programme und Pakete installiert/modifiziert werden können ohne die Betriebssystemumgebung zu verändern.

Dadurch können zum Beispiel andere Versionen von Python oder von Python-Modulen getestet werden.

Technisch gesehen ist eine virtuelle Umgebung ein Verzeichnis, in dem die gewünschten Pakete und Programme bzw. die gewünschte Python-Version installiert ist. Entsprechend werden die notwendigen Umgebungsvariablen modifiziert: PATH, PYTHONLIB, …

Arbeiten mit einer virtuellen Umgebung

  • Virtuelle Umgebung einrichten/installieren (einmalig)
  • Virtuelle Umgebung aktivieren
  • „Arbeiten“ in der Umgebung, z. B ein Python-Programm ausführen
  • Virtuelle Umgebung deaktivieren

Einrichten einer virtuellen Umgebung

Zur Unterstützung von virtuellen Umgebungen gibt es mehrere Programme/Pakete

  • venv
  • poetry
  • pyenv
  • virtualenv

venv

Installation

Einrichten einer virtuellen Umgebung

➜ python -m venv .venv


➜ pip -V
pip 21.2.4 from D:\python\venv\lib\site-packages\pip (python 3.9)

➜ & .\.venv\Scripts\Activate.ps1

➜ pip -V
pip 21.1.3 from d:\venv\.venv\lib\site-packages\pip (python 3.9)

poetry

Installation

$ pip install poetry

Einrichten einer virtuellen Umgebung

$ poetry new app
Created package app in app
$ cd app
$ tree .
.
├── README.rst
├── app
│   └── __init__.py
├── pyproject.toml
└── tests
    ├── __init__.py
    └── test_app.py

2 directories, 5 files
$ poetry config virtualenvs.create true  --local
$ poetry config virtualenvs.in-project true --local
$ tree .
.
├── README.rst
├── app
│   └── __init__.py
├── poetry.toml
├── pyproject.toml
└── tests
    ├── __init__.py
    └── test_app.py

2 directories, 6 files

Inhalt der Projektdatei poetry.toml

[virtualenvs]
create = true
in-project = true
➜ poetry install
Updating dependencies
Resolving dependencies...

Writing lock file

Package operations: 10 installs, 0 updates, 0 removals

  • Installing pyparsing (2.4.7)
  • Installing atomicwrites (1.4.0)
  • Installing attrs (21.2.0)
  • Installing colorama (0.4.4)
  • Installing more-itertools (8.8.0)
  • Installing packaging (21.0)
  • Installing pluggy (0.13.1)
  • Installing py (1.10.0)
  • Installing wcwidth (0.2.5)
  • Installing pytest (5.4.3)

Installing the current project: app (0.1.0)
$ tree .
.
├── README.rst
├── app
│   └── __init__.py
├── poetry.lock
├── poetry.toml
├── pyproject.toml
└── tests
    ├── __init__.py
    └── test_app.py

virtualenv

Installation

Installation des Paketes pyenv

$ brew install pyenv-virtualenv

Anpassen der Bash Startdatei .bashrc

 if which pyenv-virtualenv-init > /dev/null; then
     eval "$(pyenv virtualenv-init -)"
 fi

Virtuelle Umgebung einrichten

Auflisten aller zur Verfügung stehenden Python Versionsn

$ pyenv install --list

Installation einer Python Version

pyenv install 3.7.2

Auflisten aller installierten Versionen

$ pyenv versions
* system (set by /Users/<your username>/.pyenv/version)
  2.7.14
  3.7.1
  3.7.2
# Python 2
$ pyenv virtualenv 2.7.14 venv
# Python 3
$ pyenv virtualenv 3.7.2 venv

Umgebungen anzeigen: die letzen beiden Zeilen zeigen die soeben eingerichtete Umgebung an

$ pyenv versions
* system (set by /Users/RalphG/.pyenv/version)
  2.7.14
  3.7.1
  3.7.2
  3.7.2/envs/venv
  venv

Alternativ: nur die virtuellen Umgebungen anzeigen

$ pyenv virtualenvs

Umgebung aktivieren / deaktivieren

$ pyenv activate <name>
$ pyenv deactivate

Umgebung testen

$ which python
~/pkg.virtualenv/bin/python

Das Paket virtualenv

Installation

$ pip install virtualenv

Erstellen einer virtuellen Umgebung

Feststellen des Pfades der gewünschten Python Version

Python 2

$ which python2
/usr/local/bin/python2

Python 3

$ which python3
/usr/local/bin/python3

Einrichten der virtuellen Umgebung

Python 2

$ virtualenv venv2 --python /usr/local/bin/python2

Python 3

$ virtualenv venv3 --python /usr/local/bin/python3

Arbeiten mit einer virtuellen Umgebung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

de German
X