2013-06-28 16 views
7

La versione python predefinita nel mio sistema è 2.6.6. Ho installato virtualenv e voglio che il virtualenv predefinito sia 2.7 ogni volta che apro un terminale.Attivare un virtualenv predefinito all'avvio di un terminale (utilizzando bashrc)

Così, ho aggiunto il seguente comando nel file ~/.bashrc:

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

Ora ogni volta che inizio un terminale facendo clic sull'icona in ambiente Gnome (vale a dire, l'ho già collegati alla macchina e aprire una nuova finestra di terminale (xterm) all'interno di Gnome), il simbolo della shell assomiglia a questo:

(py2.7)(py2.7) 

sembra che in qualche modo ho un virtualenv all'interno di un altro virtualenv. Ancora peggio, io può disattivare solo una virtualenv ma non l'altro, come dimostrano qui di seguito:

(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. 
    >>> 

Come si può vedere, anche se il pitone di default nel mio sistema è 2.6, mi sono bloccato al virtualenv (2.7)

Se passo a una console virtuale di testo con Ctrl + Alt + F2 e accesso, sembra normale.

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

Posso disattivare e tornare al python predefinito del sistema 2.6.

(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. 
    >>> 

Qual è il problema? È possibile impostare la virtualenv predefinita su 2.7 ogni volta che apro un terminale in Gnome?

La mia distribuzione Linux è RedHat 6.

+1

bin di acquisizione/attivazione modifica il tuo $ PATH così la sua prima voce è la directory bin/virtual.Questo è tutto ciò che fa; è puramente una comodità. Prova a saltare la direttiva di sourcing e preferisci semplicemente modificare la variabile d'ambiente PATH. Potresti vedere i problemi che stai vedendo se apri il tuo .bashrc due volte ... –

+0

PS. Ho aggiunto la direttiva sourcing nella parte inferiore del mio '.bashrc' e ho iniziato un nuovo bash-terminal e si comporta come previsto (cioè funziona). Testato su Ubuntu 12.04. Cosa intendi con "facendo clic sull'icona nell'ambiente Gnome"? –

+2

hai bisogno di [virtualenvwrapper] (http://virtualenvwrapper.readthedocs.org/en/latest/) nella tua vita –

risposta

5

Che ne dici di questo? Per verificare se sei già all'interno di una virtualenv :)

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

La risposta di Wolph non ha funzionato per me. Invece ho usato seguente prova nel mio .bashrc:

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

uscite TTY con 0 se l'ingresso standard è un terminale e 1 se non lo è. Se non si verifica questo, in qualche modo viene eseguito due volte: una volta al momento dell'accesso e inoltre quando si apre un terminale.

Edit: Se lo fai "schermo" Ora, sarà ancora una volta ottenere (py2.7)(py2.7)[email protected]] $

2

mi consiglia di utilizzare autoenv che è davvero conveniente.

2

Io uso virtualenvwrapper e quindi simile a Godrebh's approach, ho appena chiamato il mio preferito virtualenv predefinito nel mio .bashrc (o altro script di accesso).

if (tty -s); then 
    workon py3_default 
fi 
Problemi correlati