2013-06-28 7 views
7

Die Standard-Python-Version in meinem System ist 2.6.6. Ich habe virtualenv installiert, und ich möchte, dass der Standardvirtualenv 2.7 ist, wenn ich ein Terminal öffne.Aktivieren Sie eine Standard-virtualenv beim Starten eines Terminals (mit bashrc)

Also, habe ich den folgenden Befehl in der Datei ~/.bashrc:

source $HOME/virtualenvs/py2.7/bin/activate 

Nun, wenn ich einen Terminal, indem Sie auf das Symbol in Gnome-Umgebung zu starten (dh habe ich bereits in die Maschine angemeldet und öffnen Sie ein neues Terminalfenster (xterm) innerhalb Gnome), sieht die Shell-Symbol wie folgt aus:

(py2.7)(py2.7) 

Es sieht aus wie irgendwie habe ich ein virtualenv in einem anderen virtualenv. Noch schlimmer ist, kann ich nur den einen virtualenv deaktivieren, aber nicht die anderen, wie im Folgenden zeigen:

(py2.7)(py2.7)deactivate 
    (py2.7)python 
    Python 2.7.5 (default, Jun 28 2013, 14:53:08) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 
    Type "help", "copyright", "credits" or "license" for more information. 
    >>> exit() 
    (py2.7)deactivate 
    bash: deactivate: command not found 
    (py2.7)python 
    Python 2.7.5 (default, Jun 28 2013, 14:53:08) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 
    Type "help", "copyright", "credits" or "license" for more information. 
    >>> 

Wie Sie sehen können, obwohl der Standard-Python in meinem System 2.6 ist, ich bin an der virtualenv (2.7) stecken

Wenn ich mit Strg + Alt + F2 zu einem Text virtuellen Konsole wechseln und mich einloggen, sieht es normal aus.

(py2.7)[[email protected] ~]$ 

Ich kann deaktivieren und zurück zum Standard-Python 2.6 des Systems.

(py2.7)[[email protected] ~]$ python 
    Python 2.7.5 (default, Jun 28 2013, 14:53:08) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 
    Type "help", "copyright", "credits" or "license" for more information. 
    >>> exit() 
    (py2.7)[[email protected] ~]$ deactivate 
    [[email protected] ~]$ python 
    Python 2.6.6 (r266:84292, Oct 12 2012, 14:23:48) 
    [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2 
    Type "help", "copyright", "credits" or "license" for more information. 
    >>> 

Was ist das Problem? Kann ich den Standardvirtualenv auf 2.7 setzen, wenn ich ein Terminal in Gnome öffne?

Meine Linux-Distribution ist RedHat 6.

+1

sourcing bin/activate ändert Ihren $ PATH, so dass der erste Eintrag das bin/directory des virtualenv ist. Das ist alles, was es tut; es ist nur eine Bequemlichkeit. Versuchen Sie, die Sourcing-Direktive zu überspringen und spielen Sie stattdessen mit der PATH-Umgebungsvariablen herum. Sie sehen möglicherweise die Probleme, die Sie sehen, wenn Sie Ihre .bashrc zweimal beziehen ... –

+0

PS. Ich habe die Sourcing-Direktive am Ende meiner '.bashrc' hinzugefügt und ein neues Bash-Terminal gestartet und es verhält sich wie erwartet (d. H. Es funktioniert). Getestet auf Ubuntu 12.04. Was meinst du mit "Klicken auf das Symbol in Gnome-Umgebung"? –

+2

Sie brauchen [virtualenvwrapper] (http://virtualenvwrapper.readthedocs.org/en/latest/) in Ihrem Leben –

Antwort

5

Wie wäre es damit? Um zu testen ob du schon in einem virtualenv bist :)

test -z "$VIRTUAL_ENV" && source $HOME/virtualenvs/py2.7/bin/activate 
1

Wolphs Antwort hat bei mir nicht funktioniert. Stattdessen habe ich in meinem .bashrc folgenden Test:

if (tty -s); then 
    source /pathto/virtualenvs/py2.7/bin/activate 
fi 

tty Ausgänge mit 0, wenn die Standardeingabe ein Terminal ist und 1, wenn es nicht ist. Wenn Sie das nicht testen, wird es irgendwie zweimal ausgeführt: Einmal beim Einloggen und zusätzlich beim Öffnen eines Terminals.

Edit: Wenn Sie "Bildschirm" jetzt, wieder Sie (py2.7)(py2.7)[email protected]] $

2

bekommen würde ich empfehlen, autoenv zu verwenden, die wirklich praktisch.

Verwandte Themen