Frage Wie verlassen / verlassen / deaktivieren Sie einen Python virtualenv?


Ich benutze virtualenv und den virtualenvwrapper. Ich kann mit dem workon-Befehl einfach zwischen virtualenv wechseln.

me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$ 

Wie aber verlasse ich alle virtuellen Maschinen und arbeite wieder an meiner realen Maschine? Gerade jetzt, die einzige Möglichkeit, zu der ich zurückkehren kann

me@mymachine:~$ 

besteht darin, die Shell zu verlassen und eine neue zu starten. Das ist irgendwie nervig. Gibt es einen Befehl, um "nichts" zu arbeiten, und wenn ja, was ist das? Wenn ein solcher Befehl nicht existiert, wie würde ich ihn erstellen?


1067
2018-06-13 14:15


Ursprung


Antworten:


In der Regel gibt es beim Aktivieren eines virtualenv eine Shell-Funktion namens:

$ deactivate

was die Dinge wieder normalisiert.

Bearbeiten 1

Ich habe mir gerade nochmal den Code genauer angeschaut virtualenvwrapper, und ja, es unterstützt auch deactivate als der weg von allen virtualenvs zu entkommen.

Bearbeiten 2

Wenn du versuchst, einen zu verlassen Anakonda Umgebung ist die Prozedur etwas anders: Führen Sie den Zwei-Wort-Befehl aus source deactivate da sie die Deaktivierung mithilfe eines eigenständigen Skripts implementieren.

bash-4.3$ deactivate
pyenv-virtualenv: deactivate must be sourced. Run 'source deactivate' instead of 'deactivate'
bash-4.3$ source deactivate
pyenv-virtualenv: no virtualenv has been activated.

1758
2018-06-13 14:31



Ich habe eine definiert alias  Abwechslung als das Gegenteil von Workon:

alias workoff='deactivate'

Leicht zu erinnern:

[bobstein@host ~]$ workon django_project
(django_project)[bobstein@host ~]$ workoff
[bobstein@host ~]$

32
2018-01-14 16:23



$ deactivate 

Wenn dies nicht funktioniert, versuchen Sie es

$ source deactivate

Wer weiß wie bash source Arbeiten werden denken, das ist seltsam, aber einige Wrapper / Workflows rund um virtualenv implementieren als Kompliment / Gegenstück zu source activate. YMMV


21
2018-04-12 06:41



Aktivieren der virtuellen Python-Umgebung:

$cd ~/python-venv/
$./bin/activate

deaktivieren:

$deactivate

10
2017-11-26 07:06



Sie können verwenden virtualenvwrapper um den Umgang mit Ihnen zu erleichtern virtualenv

Installieren virtualenvwrapper

pip install virtualenvwrapper

Wenn Sie die Standard-Shell verwenden, öffnen Sie Ihre ~/.bashrc oder ~/.zshrc wenn du oh-my-zsh benutzt. Fügen Sie diese zwei Zeilen hinzu:

export WORKON_HOME=$HOME/.virtualenvs  
source /usr/local/bin/virtualenvwrapper.sh

Um ein existierendes virtualenv zu aktivieren, benutze den Befehl workon:

$ workon myenv
(myenv)$

Um dein virtualenv zu deaktivieren:

(myenv)$ deactivate

Hier ist mein AnleitungSchritt für Schritt in der Installation von virtualenv und virtualenvwrapper


1
2017-09-01 05:13



ich benutze zsh-autoenv was basiert auf autoenv.

zsh-autoenv automatisch   Quellen (bekannt / auf der weißen Liste) .autoenv.zsh Dateien, die normalerweise in   Projektstammverzeichnisse. Es behandelt "Enter" und "Leave" Events,   Verschachtelung und Versteppung von Variablen (Überschreiben und Wiederherstellen).

Hier ist ein Beispiel:

; cd dtree 
Switching to virtual environment: Development tree utiles
;dtree(feature/task24|✓); cat .autoenv.zsh       
# Autoenv.
echo -n "Switching to virtual environment: "
printf "\e[38;5;93m%s\e[0m\n" "Development tree utiles"
workon dtree
# eof
dtree(feature/task24|✓); cat .autoenv_leave.zsh 
deactivate

Also wenn ich das verlasse dtree Verzeichnis wird die virtuelle Umgebung automatisch verlassen.


0
2018-02-14 10:50



(my_env) basant @ basant: ~ / EonTraining / my_env $ deaktivieren

benutze 'deaktivieren'

Basant @ Basant-Lenovo-E40-80: ~ / EonTraining / my_env $

Gegangen (my_env);


0
2017-09-03 06:43



Hatte das selbe Problem bei der Arbeit an einem Installer Skript, habe ich mir mal was angeschaut bin / aktiviere_this.py tat es und kehrte es um.

Beispiel:

#! /usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys

# path to virtualenv
venv_path = os.path.join('/home', 'sixdays', '.virtualenvs', 'test32')

# Save old values
old_os_path = os.environ['PATH']
old_sys_path = list(sys.path)
old_sys_prefix = sys.prefix


def deactivate():
    # Change back by setting values to starting values
    os.environ['PATH'] = old_os_path
    sys.prefix = old_sys_prefix
    sys.path[:0] = old_sys_path


# Activate the virtualenvironment
activate_this = os.path.join(venv_path, 'bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))


# Print list of pip packages for virtualenv for example purpose
import pip
print str(pip.get_installed_distributions())
# Unload pip module
del pip

# deactive/switch back to initial interpreter
deactivate()

# print list of initial environment pip packages for example purpose
import pip
print str(pip.get_installed_distributions())

Nicht 100% sicher, wenn es wie vorgesehen funktioniert, habe ich etwas komplett verpasst.


-2
2017-12-11 18:18