bash: mkvirtualenv: comando non trovato


100

Dopo aver seguito le istruzioni sul post di Doug Hellmanvirtualenvwrapper , non riuscivo ancora ad avviare un ambiente di test.

[mpenning@tsunami ~]$ mkvirtualenv test
-bash: mkvirtualenv: command not found
[mpenning@tsunami ~]$

Va notato che sto usando WORKON_HOMEche non è nel mio $HOME. Ho provato a cercare /usr/local/bin/virtualenvwrapper.shcome mostrato nei virtualenvwrapperdocumenti di installazione , ma non esiste.

Sto eseguendo CentOS 6 e Python 2.6.6, se questo è importante.


# File: ~/.bash_profile
# ...

export WORKON_HOME="/opt/virtual_env/"
source "/opt/virtual_env/bin/virtualenvwrapper_bashrc"

Risposte:


107

Soluzione 1 :

Per qualche motivo, virtualenvwrapper.shinstallato in /usr/bin/virtualenvwrapper.sh, invece che sotto /usr/local/bin.

Quanto segue nei miei .bash_profilelavori ...

source "/usr/bin/virtualenvwrapper.sh"
export WORKON_HOME="/opt/virtual_env/"

La mia installazione sembra funzionare bene senza sourcing virtualenvwrapper_bashrc

Soluzione 2 :

In alternativa, come menzionato di seguito, puoi sfruttare la possibilità che virtualenvwrapper.shè già nella tua shell PATHe semplicemente emettere un filesource `which virtualenvwrapper.sh`


5
L'impostazione WORKON_HOMEsu "~ / .virtualenvs" ( valore predefinito ) consente di impostare virtualenvs privati
Pierre de LESPINAY

1
Se installi utilizzando il gestore di pacchetti della tua distro, i file saranno in /usr/bininvece di /usr/local/bin. In generale, non dovresti dare per scontato che l'uno o l'altro venga trovato; questo è uno dei motivi per cui abbiamo una PATHvariabile.
tripla

Questa risposta era basata sull'installazione di virtualenvwrapper con pip, che è quello che preferisco fare.
Mike Pennington

Deve essere installato prima,pip install virtualenvwrapper
Eddie

WORKON_HOMEè opzionale e non ha nulla a che fare con la soluzione.
focaccine

55

Provare:

source `which virtualenvwrapper.sh`

I backtick sono la sostituzione del comando: prendono tutto ciò che il programma stampa e lo inseriscono nell'espressione. In questo caso "which" controlla $ PATH per trovare virtualenvwrapper.sh e restituisce il percorso ad esso. Lo script viene quindi letto dalla shell tramite "source".

Se vuoi che ciò accada ogni volta che riavvii la shell, è probabilmente meglio prendere prima l'output dal comando "which" e poi inserire la riga "source" nella shell, qualcosa del genere:

echo "source /path/to/virtualenvwrapper.sh" >> ~/.profile

^ Questo potrebbe differire leggermente in base alla shell. Inoltre, fai attenzione a non usare un singolo> poiché questo troncerà il tuo ~ / .profile: -o


4
Anche se questo potrebbe essere un prezioso suggerimento per risolvere il problema, una risposta ha davvero bisogno di un po 'più di dettagli di questo. Si prega di modificare per spiegare come questo risolverà il problema. In alternativa, considera invece di scrivere questo come commento.
Toby Speight

1
Questo ha risolto il mio problema. Ma qualcuno spiegherà perché e come?
h0r53

1
I backtick sono la sostituzione del comando: prendono tutto ciò che il programma stampa e lo inseriscono nell'espressione. In questo caso "which" controlla $ PATH per trovare virtualenvwrapper.sh e restituisce il percorso ad esso. Lo script viene quindi letto dalla shell tramite "source".
Erich,

43

Ho avuto lo stesso problema su OS X 10.9.1 con Python 2.7.5. Nessun problema con WORKON_HOMEme, ma ho dovuto aggiungere manualmente source "/usr/local/bin/virtualenvwrapper.sh"a ~/.bash_profile(o ~/.bashrcin unix) dopo aver eseguitopip install virtualenvwrapper


1
Dove hai aggiunto manualmente la fonte "/usr/local/bin/virtualenvwrapper.sh"?
Gregologia

1
@Gregology ho aggiunto quella riga a ~/.bash_profile. Nota che quando lo aggiungi per la prima volta dovrai ricaricare il terminale (che viene eseguito .bash_profile) o semplicemente eseguire quel sourcecomando direttamente dalla riga di comando.
Nick Benes

1
Sarebbe molto utile se avessi un titolo con il nome del file e mostrassi tutti i contenuti in modo da non dover ricevere domande di follow-up su "dove l'hai messo?"
JGallardo

1
Indipendentemente dal fatto che tu utilizzi .bash_profileo .bashrcmeno una conseguenza diretta della piattaforma che stai utilizzando, sebbene l'una o l'altra possa mancare su alcune piattaforme. Vedere la pagina di manuale di Bash per le loro differenze. In generale, dovresti davvero averne bisogno solo nel tuo .bash_profile, ma alcune distribuzioni usano configurazioni che complicano le cose.
tripleee

25

Prerequisiti per eseguire questo comando -

  1. pip (acronimo ricorsivo di P ip I nstalls P ackages) è un sistema di gestione dei pacchetti utilizzato per installare e gestire i pacchetti software scritti in Python. Molti pacchetti possono essere trovati nel Python Package Index (PyPI).

    sudo apt-get install python-pip

  2. Installa l'ambiente virtuale. Utilizzato per creare ambienti virtuali, per installare pacchetti e dipendenze di più progetti isolati l'uno dall'altro.

    sudo pip install virtualenv

  3. Installa il wrapper dell'ambiente virtuale Informazioni sul wrapper dell'ambiente virtuale

    sudo pip install virtualenvwrapper

Dopo aver installato i prerequisiti, è necessario attivare il wrapper dell'ambiente virtuale per creare l'ambiente virtuale. Di seguito sono riportati i passaggi:

  1. imposta la directory dell'ambiente virtuale nella variabile di percorso- export WORKON_HOME=(directory you need to save envs)

  2. source /usr/local/bin/virtualenvwrapper.sh -p $WORKON_HOME

Come menzionato da @Mike, fonte `which virtualenvwrapper.sh` o which virtualenvwrapper.sh può essere utilizzato per individuare il file virtualenvwrapper.sh.

È meglio mettere sopra due righe in ~ / .bashrc per evitare di eseguire i comandi sopra ogni volta che apri una nuova shell. Questo è tutto ciò di cui hai bisogno per creare un ambiente usando mkvirtualenv

Punti da tenere a mente -

  • In Ubuntu, potrebbe essere necessario installare virtualenv e virtualenvwrapper come root. Basta anteporre il comando sopra con sudo.
  • A seconda del processo utilizzato per installare virtualenv, il percorso di virtualenvwrapper.sh può variare. Trova il percorso appropriato eseguendo $ find / usr -name virtualenvwrapper.sh. Regola di conseguenza la riga nel tuo script .bash_profile o .bashrc.

1
Aggiunta di una nota. Su Ubuntu 18.04, ho dovuto riavviare dopo l'installazione e poi ha funzionato.
Dan Grahn

@screenmutt Grazie per il prezioso contributo. Potrei averlo perso perché uso Ubuntu 16.04. Tuttavia, vorrei sapere dopo quale passaggio è stato necessario riavviare? È dopo l'installazione dei pacchetti pip o dopo aver impostato la "directory dell'ambiente virtuale"?
Keshav

Dopo l'installazione del wrapper. Dopo di che ha funzionato.
Dan Grahn,

1
@ DanGrahn non è necessario riavviare, è sufficiente eseguire nuovamente .bashrc- esplicitamente source ~/.bashrcnel terminale corrente o aprire una nuova finestra di terminale
TJ Ellis

10

Usa questa procedura per creare un ambiente virtuale in Ubuntu

passo 1

Installa pip

   sudo apt-get install python-pip

passo 2

Installa virtualenv

   sudo pip install virtualenv

fase 3

Crea una directory per archiviare i tuoi virtualenvs (io uso ~ / .virtualenvs)

   mkdir ~/.virtualenvs

oppure usa questo comando per installare una versione specifica di python in env

virtualenv -p /usr/bin/python3.6 venv

fase 4

   sudo pip install virtualenvwrapper

passaggio 5

   sudo nano ~/.bashrc

passaggio 6

Aggiungi questo codice di due righe alla fine del file bashrc

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

passaggio 7

Apri nuovo terminale (consigliato)

passaggio 8

Crea un nuovo virtualenv

  mkvirtualenv myawesomeproject

passaggio 9

Per caricare o passare da virtualenvs, usa il comando workon:

  workon myawesomeproject

passaggio 10

Per uscire dal tuo nuovo virtualenv, usa

 deactivate

e assicurati di usare pip vs pip3

OPPURE segui i passaggi seguenti per installare l'ambiente virtuale utilizzando python3

Installa env

python3 -m venv my-project-env

e attiva il tuo ambiente virtuale utilizzando il seguente comando:

source my-project-env/bin/activate

6

Dato che ho appena fatto un tiro, cercherò di scrivere la risposta che avrei desiderato due ore fa. Questo è per le persone che non vogliono solo la soluzione copia e incolla

Primo: ti chiedi perché copiare e incollare i percorsi funziona per alcune persone mentre non funziona per altri? ** Il motivo principale per cui le soluzioni differiscono sono le diverse versioni di Python, 2.x o 3.x. Esistono in realtà versioni distinte di virtualenv e virtualenvwrapper che funzionano con python 2 o 3. Se sei su python 2, installa in questo modo:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

Se hai intenzione di utilizzare python 3, installa le relative versioni di python 3

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

Hai installato con successo i pacchetti per la tua versione di python e sono tutti pronti, giusto? Bene, provalo. Digita workonnel tuo terminale. Il tuo terminale non sarà in grado di trovare il comando ( workonè un comando di virtualenvwrapper). Ovviamente non lo farà. Workonè un eseguibile che sarà disponibile solo dopo aver caricato / originato il file virtualenvwrapper.sh. Ma la guida all'installazione ufficiale ti ha coperto su questo, giusto ?. Basta aprire il tuo .bash_profile e inserire quanto segue, si dice nella documentazione:

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

Soprattutto il comando source /usr/local/bin/virtualenvwrapper.shsembra utile poiché il comando sembra caricare / generare il file desiderato virtualenvwrapper.shche contiene tutti i comandi con cui si desidera lavorare come workone mkvirtualenv. Ma sì, no. Quando si segue la guida ufficiale di installazione, si è molto probabile di ricevere l'errore dal post iniziale: mkvirtualenv: command not found. Ancora nessun comando è stato trovato e sei ancora frustrato. Allora qual è il problema qui? Il problema è che virtualenvwrapper.sh non è dove lo stai cercando in questo momento. Breve promemoria ... stai cercando qui:

source /usr/local/bin/virtualenvwrapper.sh

Ma c'è un modo abbastanza semplice per trovare il file desiderato. Basta digitare

which virtualenvwrapper

al tuo terminale. Questo cercherà il tuo PATH per il file, poiché è molto probabile che si trovi in ​​una cartella inclusa nel PATH del tuo sistema.

Se il tuo sistema è molto esotico, il file desiderato si nasconderà fuori da una cartella PATH. In tal caso puoi trovare il percorso virtalenvwrapper.shcon il comando della shellfind / -name virtualenvwrapper.sh

Il risultato potrebbe essere qualcosa del genere: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh Congratulazioni. You have found your missing file!. Ora tutto ciò che devi fare è cambiare un comando nel tuo .bash_profile. Basta cambiare:

source "/usr/local/bin/virtualenvwrapper.sh"

per:

"/Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh"

Congratulazioni. Virtualenvwrapper ora funziona sul tuo sistema. Ma puoi fare ancora una cosa per migliorare la tua soluzione. Se hai trovato il file virtualenvwrapper.shcon il comando which virtualenvwrapper.shsai che si trova all'interno di una cartella del PATH. Quindi, se scrivi solo il nome del file, il tuo file system presumerà che il file si trovi all'interno di una cartella PATH. Quindi non devi scrivere il percorso completo. Basta digitare:

source "virtualenvwrapper.sh"

Questo è tutto. Non sei più frustrato. Hai risolto il tuo problema. Fiduciosamente.


In realtà ho appena copiato e passato la tua soluzione
johnny 5

2

Per installare correttamente virtualenvwrappersu Ubuntu 18.04.3 devi fare quanto segue:

  1. Installare virtualenv

    sudo apt install virtualenv
  2. Installare virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
  3. Aggiungi quanto segue alla fine del .bashrcfile

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
  4. Esegui il .bashrcfile

    source ~/.bashrc
  5. Crea il tuo virtualenv

    mkvirtualenv your_virtualenv

funziona anche su Ubuntu 20.04. una piccola correzione tho: WORKON_HOME=~/.virtualenvsè l'impostazione predefinita. non c'è bisogno di impostarlo. VIRTUALENVWRAPPER_PYTHON=/usr/bin/pythonè anche l'impostazione predefinita, ma quando si usa python3 è utile. anche uno dovrebbe usare export PATH="$HOME/.local/bin:$PATH"per i percorsi binari python
scones il

1

Su Windows 7 e Git Bash questo mi aiuta:

  1. Crea un file ~ / .bashrc (nella cartella home dell'utente)
  2. Aggiungi riga export WORKON_HOME = $ HOME / .virtualenvs (devi creare questa cartella se non esiste)
  3. Aggiungi la sorgente di linea "C: \ Program Files (x86) \ Python36-32 \ Scripts \ virtualenvwrapper.sh" (cambia il percorso per il tuo virtualenvwrapper.sh)

Riavvia il tuo git bash e il comando mkvirtualenv ora funzionerà bene.


1

Utilizzando Git Bash su Windows 10 e Python36 per Windows ho trovato virtualenvwrapper.sh in una posizione leggermente diversa e l'esecuzione ha risolto il problema

source virtualenvwrapper.sh 
/c/users/[myUserName]/AppData/Local/Programs/Python36/Scripts

0

Risolto il mio problema nel sistema operativo Ubuntu 14.04 con python 2.7.6, aggiungendo due righe di seguito nei file ~ / .bash_profile (o ~ / .bashrc in unix).

fonte "/usr/local/bin/virtualenvwrapper.sh"

export WORKON_HOME = "/ opt / virtual_env /"

E poi eseguendo entrambe queste righe sul terminale.


0

Su Windows 10, per creare l'ambiente virtuale, sostituisco " pip mkvirtualenv myproject" con " mkvirtualenv myproject" e funziona bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.