Wie richte ich eine virtuelle Python-Umgebung in Ubuntu ein und verwende sie?

73

Virtuelle Python-Umgebungen werden verwendet, um isolierte Python-Umgebungen zu erstellen, um Abhängigkeits- und Versionskonflikte zu vermeiden, und auch indirekt um Berechtigungsprobleme zu kümmern. Aber wie lässt es sich in Ubuntu am einfachsten einrichten und verwenden?

Gerhard Burger
quelle

Antworten:

99

Mit virtualenvwrapper(benutzerfreundliche Wrapper für die Funktionalität von virtualenv)

Installieren Sie virtualenv

Installieren Sie virtualenvmit

sudo apt-get install virtualenv

(für Ubuntu 14.04 (vertrauenswürdig) installieren python-virtualenv)

Installieren Sie virtualenvwrapper

Der Grund, warum wir auch virtualenvwrapper installieren, ist, dass es nette und einfache Befehle zum Verwalten Ihrer virtuellen Umgebungen bietet. Es gibt zwei Möglichkeiten, um zu installieren virtualenvwrapper:

Als Ubuntu-Paket (ab Ubuntu 16.04)

Lauf

sudo apt install virtualenvwrapper

dann renne

echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc

Mit pip

  1. Installiere und / oder aktualisiere pip

    Installiere pip für Python 2 mit

    sudo apt-get install python-pip

    oder für Python 3

    sudo apt-get install python3-pip

    (Wenn Sie Python 3 verwenden, müssen Sie möglicherweise Python 3 pip3anstelle von Python 3 pipim Rest dieses Handbuchs verwenden.)

    Optional (aber empfohlen): Aktivieren Sie die automatische Bash-Vervollständigung für pip

    Lauf

    pip completion --bash >> ~/.bashrc

    und source ~/.bashrczum Aktivieren ausführen .

  2. Installieren Sie virtualenvwrapper

    Da wir vermeiden wollen,sudo pip installieren wir virtualenvwrapperlokal (standardmäßig unter ~/.local) mit:

    pip install --user virtualenvwrapper

    und

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
  3. Quellvirtualenvwrapper in .bashrc

    echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc

Richten Sie virtualenv und virtualenvwrapper ein:

Zuerst exportieren wir die WORKON_HOMEVariable, die das Verzeichnis enthält, in dem unsere virtuellen Umgebungen gespeichert werden sollen. Lassen Sie uns das machen~/.virtualenvs

export WORKON_HOME=~/.virtualenvs

Jetzt legen Sie auch dieses Verzeichnis an

mkdir $WORKON_HOME

und fügen Sie diesen Export in unsere ~/.bashrcDatei ein, damit diese Variable automatisch definiert wird

echo "export WORKON_HOME=$WORKON_HOME" >> ~/.bashrc

Wir können auch einige zusätzliche Tricks wie die folgenden hinzufügen , die sicherstellen, dass, wenn pipeine zusätzliche virtuelle Umgebung erstellt wird, diese auch in unserem WORKON_HOMEVerzeichnis abgelegt wird :

echo "export PIP_VIRTUALENV_BASE=$WORKON_HOME" >> ~/.bashrc 

Quell ~ / .bashrc, um die Änderungen zu laden

source ~/.bashrc

Testen Sie, ob es funktioniert

Jetzt erstellen wir unsere erste virtuelle Umgebung. Das -pArgument ist optional. Es wird verwendet, um die zu verwendende Python-Version festzulegen. es kann auch python3zum Beispiel sein.

mkvirtualenv -p python2.7 test

Sie werden sehen, dass die Umgebung eingerichtet wird, und Ihre Eingabeaufforderung enthält jetzt den Namen Ihrer aktiven Umgebung in Klammern. Auch wenn du jetzt rennst

python -c "import sys; print sys.path"

Sie sollten eine Menge davon sehen, /home/user/.virtualenv/...da es jetzt nicht Ihre System-Site-Pakete verwendet.

Sie können Ihre Umgebung deaktivieren, indem Sie ausführen

deactivate

und wenn du nochmal dran arbeiten willst, tippe einfach

workon test

Wenn Sie Ihre Umgebung löschen möchten, geben Sie schließlich Folgendes ein

rmvirtualenv test

Genießen!


Vielen Dank an den Autor dieses Blogposts .

Gerhard Burger
quelle
2
python-pipund können python-virtualenvüber das Ubuntu-Repository installiert werden, ohne dass eine manuelle Installation erforderlich ist.
Timo
2
In Ubuntu empfehlen wir jedoch aus vielen Gründen Ubuntu-Pakete. An älteren Versionen von pip oder virtualenv ist nichts auszusetzen, sie sind perfekt in der Lage.
Tumbleweed
1
@GerhardBurger: Wenn Sie ein Python3-Virtualenv erstellen, wird ein Pip erstellt, der in Python3 funktioniert. Wenn Sie Ubuntus Virtualenv verwenden, um das Virtualenv zu erstellen, wird alles, was Sie getan haben, in dem Virtualenv enthalten sein. Wenn Sie mit sudo easy_installing anfangen, hinterlässt es überall in / usr / local ein Durcheinander, das nicht trivial zu bereinigen ist, ohne viel Gewinn.
Tumbleweed
es sieht so aus, als ob kein alias mehr benötigt wird: --no-site-packagesist voreingestellt und --distributeveraltet
int_ua
Falls mkvirtualenv testnicht funktioniert, siehe auch: stackoverflow.com/questions/15608236/…
Nikos Alexandris
8

Virtuelle Umgebungen bieten eine Möglichkeit zum Verwalten und Isolieren von Abhängigkeiten auf Projektbasis. Darüber hinaus vermeiden sie auch die gesamte sudo pip installSituation, die ein Sicherheitsrisiko darstellt, wie ich unter https://askubuntu.com/a/802594/15003 erläutert habe . Die offizielle Python-Dokumentation empfiehlt auch die Verwendung virtueller Umgebungen .

Der einfachste Weg, virtuelle Umgebungen für Python 2 und Python 3 zu erstellen und zu verwenden, ist die Installation virtualenvmit aptoder apt-get. Erstellen Sie für jedes Python-Projekt eine virtuelle Umgebung und aktivieren Sie diese. Beachten Sie, dass die virtuelle Umgebung für eine bestimmte Python-Version spezifisch ist. Nach der Aktivierung können Sie pipmit Python-Pakete wie gewohnt installieren, unabhängig davon, ob Sie Python 2 oder 3 verwenden. Es ist nicht erforderlich, pip3Python 3 zu verwenden . Es sudowird nur zur Installation virtualenvund nicht zur Verwendung mit Python 3 verwendet pip, wodurch das oben genannte Sicherheitsrisiko vermieden wird. Die Befehle dazu sind:

sudo apt update
sudo apt install virtualenv
cd ~/desired_directory  # cd to desired_directory
virtualenv venv  # create virtualenv named venv for default system Python, which is Python 2 for Ubuntu
source venv/bin/activate  # activate virtualenv
pip install -U pip  # upgrade pip in case it is outdated
pip install desired_package  # install desired_package

Wenn Sie eine virtuelle Umgebung für Python 3 erstellen möchten, ersetzen Sie diese virtualenv venvdurch:

virtualenv venv -p python3

Weitere Informationen zu verschiedenen Schnickschnack finden Sie virtualenvunter https://virtualenv.pypa.io/en/stable/ .

edwinksl
quelle
1
sourcespart mir eine
menge befehle
OSError: [Errno 40] Zu viele Ebenen symbolischer Links: '/ var / www / html / python / check / venv / bin / python'
Saravanan Nandhan
@SaravananNandhan Stellen Sie stattdessen eine neue Frage mit den erforderlichen Details.
Edwinksl
3

Mit dem von Python 3.3 (und Ubuntu 15.10) erhältlichen venv-Modul

Virtuelle Umgebungen (venvs) sind so beliebt, dass die Funktionalität jetzt in Python selbst enthalten ist (ab 3.3). Um es auf Ubuntu zu benutzen, musst du folgendes installieren python3-venv(da das ensurepipModul nicht verfügbar ist):

sudo apt-get install python3-venv

Danach können Sie verwenden

pyvenv myvirtualenv

um eine virtuelle Umgebung namens zu erstellen myvirtualenv. Sie können dann verwenden

source myvirtualenv/bin/activate

um die virtuelle Umgebung zu aktivieren. Zum Deaktivieren einfach tippen

deactivate

BEARBEITEN: Das pyvenvSkript wurde zugunsten von veraltet python3 -m venv. Dies verhindert Unklarheiten darüber, mit welchem ​​Python-Interpreter pyvenvverbunden ist und welcher Python-Interpreter von der virtuellen Umgebung verwendet wird. ( Quelle )

Gerhard Burger
quelle