GNU/Linux >> Linux Esercitazione >  >> Linux

Virtualenv usa un pitone sbagliato, anche se è il primo in $PATH

Il mio problema era che mi sono trasferito di recente il mio progetto con virtualenv in un'altra posizione, a causa di questo activate script era sbagliato VIRTUAL_ENV percorso.

$ cat path_to_your_env/bin/activate

... # some declarations

VIRTUAL_ENV="/path_to_your_env/bin/python"  # <-- THIS LINE
export VIRTUAL_ENV

... # some declarations

Per risolvere questo problema, aggiorna VIRTUAL_ENV in activate script.

Inoltre potresti aver bisogno di correggere la prima riga del tuo bin/pip per collegarsi al vero percorso di Python.


Se non ottieni il programma che which dice che dovresti ottenere, devi guardare più in alto nella catena rispetto all'esecutore della piattaforma. Le shell in genere hanno un modo per creare alias dei comandi e sulla maggior parte delle shell unixy puoi semplicemente inserire alias per vedere quali comandi sono stati rimappati. Quindi è solo questione di andare ai file di configurazione per la tua shell e rimuovere l'alias.

A volte le persone si chiamano python per cercare di capire quale Python dovrebbero usare. Ma di solito ci sono altri modi migliori. Sulla mia macchina Linux, ad esempio, python3 è nel percorso ma è un collegamento simbolico al vero pitone che sto usando.

[email protected] ~ $ which python3
/usr/bin/python3
[email protected] ~ $ ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Feb 17  2016 /usr/bin/python3 -> python3.4
[email protected] ~ $ 

Questo è bello perché i programmi non shell che eseguono Python ottengono lo stesso che faccio io e gli ambienti virtuali funzionano in modo naturale.


Come suggerito da tdelaney nei commenti, ho eseguito alias e ho scoperto che in precedenza avevo aliasato python a /usr/bin/python3.5 nel mio .bashrc .

Ho rimosso quell'alias dal mio .bashrc , ha eseguito unalias python e source ~/.bashrc e il problema è stato risolto.


Su Cygwin, ho ancora un problema anche dopo aver creato il collegamento simbolico al punto /usr/bin/python a F:\Python27\python.exe . Qui, dopo source env/Scripts/activate , which python è ancora /usr/bin/python .

Dopo tanto tempo, ho trovato una soluzione. Invece di usare virtualenv env , devi usare virtualenv -p F:\Python27\python.exe env anche se hai creato un collegamento simbolico.


Linux
  1. Perché non è possibile trovare Read /run/user/1000/gvfs anche se è in esecuzione come root?

  2. Nessuno spazio rimasto sul dispositivo anche se c'è?

  3. git gc:nessuno spazio rimasto sul dispositivo, anche se 3 GB disponibili e tmp_pack solo 16 MB

  4. Nginx tenta ancora di aprire il file di registro degli errori predefinito anche se ho impostato il file di configurazione di nginx durante il ricaricamento

  5. /bin/ls non trovato, anche se esiste!

Due ottimi usi per il comando cp:scorciatoie Bash

Python if..else Istruzione

Clear To End Of Line utilizza il colore di sfondo sbagliato in Tmux?

PIP install non riesce a trovare ffi.h anche se riconosce libffi

dlsym restituisce NULL, anche se il simbolo esiste

L'eseguibile Linux non riesce con File non trovato anche se il file è presente e in PATH