bash: mkvirtualenv: comanda nu a fost găsită (Programare, Python, Bash, Centos, Virtualenv, Virtualenvwrapper)

Mike Pennington a intrebat.
a intrebat.

După ce am urmat instrucțiunile de pe Doug Hellman’s virtualenvwrapper , , tot nu am reușit să pornesc un mediu de testare.

[[email protected] ~]$ mkvirtualenv test
-bash: mkvirtualenv: command not found
[[email protected] ~]$

Trebuie remarcat faptul că folosesc WORKON_HOME care nu se află în programul meu $HOME. Am încercat să caut /usr/local/bin/virtualenvwrapper.sh așa cum se arată în virtualenvwrapper documentația de instalare, , dar nu există.

Rulez CentOS 6 și python 2.6.6, dacă asta contează.


# File: ~/.bash_profile
# ...

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

11 răspunsuri
Mike Pennington

Soluția 1:

Din anumite motive, virtualenvwrapper.sh instalat în /usr/bin/virtualenvwrapper.sh, , în loc de sub /usr/local/bin.

Următoarele în .bash_profile funcționează…

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

Instalarea mea pare să funcționeze bine fără sursă virtualenvwrapper_bashrc

Soluția 2:

Alternativ, așa cum se menționează mai jos, ați putea profita de șansa ca virtualenvwrapper.sh se află deja în shell-ul dvs. PATH și doar să emiteți un source `which virtualenvwrapper.sh`

Comentarii

  • Setarea WORKON_HOME la „~/.virtualenvs” (valoarea implicită) permite setarea de virtualenvs private –  > Por Pierre de LESPINAY.
  • Dacă instalați folosind managerul de pachete al distribuției dumneavoastră, fișierele vor fi în /usr/bin în loc de /usr/local/bin. În general, nu ar trebui să presupuneți că se va găsi unul sau altul; acesta este unul dintre motivele pentru care avem un PATH variabilă. –  > Por tripleee.
  • Acest răspuns s-a bazat pe instalarea virtualenvwrapper cu pip, ceea ce prefer să fac eu. –  > Por Mike Pennington.
  • WORKON_HOME este opțională și nu are nicio legătură cu soluția. –  > Por scones.
  • Am găsit virtualenvwrapper/virtualenvwrapper.sh în /usr/share Ubuntu 20.04 –  > Por noobninja.
Erich

Încercați:

source `which virtualenvwrapper.sh`

Bătăturile din spate sunt substituiri de comenzi – ele iau orice tipărește programul și îl pun în expresie. În acest caz, „which” verifică $PATH pentru a găsi virtualenvwrapper.sh și scoate calea către acesta. Scriptul este apoi citit de către shell prin „source”.

Dacă doriți ca acest lucru să se întâmple de fiecare dată când reporniți shell-ul, probabil că este mai bine să luați mai întâi ieșirea de la comanda „which” și apoi să puneți linia „source” în shell, ceva de genul acesta:

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

^ Acest lucru poate fi ușor diferit în funcție de shell-ul dvs. De asemenea, aveți grijă să nu folosiți un singur > deoarece acest lucru va trunchia ~/.profile 😮

Comentarii

  • Deși acesta ar putea fi un indiciu valoros pentru a rezolva problema, un răspuns are nevoie cu adevărat de ceva mai multe detalii decât acesta. Vă rugăm să editați pentru a explica modul în care acest lucru va rezolva problema. Alternativ, luați în considerare posibilitatea de a scrie acest lucru ca un comentariu. –  > Por Toby Speight.
  • Acest lucru mi-a rezolvat problema. Dar poate cineva să explice de ce și cum? –  > Por h0r53.
  • Bătăturile din spate sunt substituiri de comenzi – ele iau orice tipărește programul și îl pun în expresie. În acest caz, „which” verifică $PATH pentru a găsi virtualenvwrapper.sh și scoate calea către acesta. Scriptul este apoi citit de către shell prin „source”. –  > Por Erich.
Nick Benes

Am avut aceeași problemă pe OS X 10.9.1 cu python 2.7.5. Nu există probleme cu WORKON_HOME pentru mine, dar a trebuit să adaug manual source "/usr/local/bin/virtualenvwrapper.sh" la ~/.bash_profile (sau ~/.bashrc în unix) după ce am rulat pip install virtualenvwrapper

Comentarii

  • Unde ați adăugat manual sursa „/usr/local/bin/virtualenvwrapper.sh”? –  > Por Gregology.
  • @Gregology Am adăugat acea linie la ~/.bash_profile. Rețineți că atunci când o adăugați pentru prima dată va trebui fie să reîncărcați terminalul (care rulează .bash_profile), fie să rulați doar că source comanda direct din linia de comandă. –  > Por Nick Benes.
  • Ar fi foarte util dacă ați avea un titlu cu numele fișierului și ați afișa tot conținutul, astfel încât să nu trebuiască să primiți întrebări ulterioare despre „unde ai pus-o?”. –  > Por JGallardo.
  • Indiferent dacă folosiți .bash_profile sau .bashrc nu este cu adevărat o consecință directă a platformei pe care o folosiți, deși una sau alta poate lipsi pe unele platforme. Consultați pagina manualului Bash pentru a vedea diferențele dintre ele. În general, ar trebui să aveți cu adevărat nevoie de acest lucru doar în .bash_profile, , dar unele distribuții folosesc configurații care complică lucrurile. –  > Por tripleee.
Keshav

Condiții prealabile pentru a executa această comandă –

  1. pip (acronim recursiv de Pip Instalează Packages) este un sistem de gestionare a pachetelor utilizat pentru instalarea și gestionarea pachetelor software scrise în Python. Multe pachete pot fi găsite în Indexul de pachete Python (PyPI).

    sudo apt-get install python-pip

  2. Instalați mediul virtual. Utilizat pentru a crea un mediu virtual, pentru a instala pachete și dependențe ale mai multor proiecte izolate unele de altele.

    sudo pip install virtualenv

  3. Instalează wrapper-ul mediului virtual Despre wrapperul de mediu virtual

    sudo pip install virtualenvwrapper

După instalarea condițiilor prealabile trebuie să puneți în acțiune virtual environment wrapper pentru a crea mediul virtual. Iată pașii de urmat –

  1. setați directorul mediului virtual în variabila path –export WORKON_HOME=(directory you need to save envs)

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

După cum a menționat @Mike, sursa `which virtualenvwrapper.sh` sau which virtualenvwrapper.sh poate fi utilizată pentru a localiza fișierul virtualenvwrapper.sh.

Cel mai bine este să puneți cele două linii de mai sus în ~/.bashrc pentru a evita executarea comenzilor de mai sus de fiecare dată când deschideți un nou shell. Asta este tot ce aveți nevoie pentru a crea un mediu folosind mkvirtualenv

Puncte de care trebuie să țineți cont –

  • În Ubuntu, este posibil să aveți nevoie să instalați virtualenv și virtualenvwrapper ca root. Pur și simplu prefixați comanda de mai sus cu sudo.
  • În funcție de procesul utilizat pentru instalarea virtualenv, calea către virtualenvwrapper.sh poate varia. Găsiți calea corespunzătoare executând $ find /usr -name virtualenvwrapper.sh. Ajustați linia din scriptul .bash_profile sau .bashrc în mod corespunzător.

Comentarii

  • Adăugarea unei note. Pe ubuntu 18.04, a trebuit să repornesc după instalare și apoi a funcționat. –  > Por Dan Grahn.
  • @screenmutt Mulțumesc pentru contribuția valoroasă. S-ar putea să-mi fi scăpat, deoarece folosesc ubuntu 16.04. Totuși, aș vrea să știu după ce pas a trebuit să reporniți ? Este după instalarea pachetelor pip sau după configurarea „directorului mediului virtual” ? –  > Por Keshav.
  • După instalarea wrapper-ului. A funcționat după aceea. –  > Por Dan Grahn.
  • @DanGrahn nu este nevoie să reporniți, trebuie doar să rulați din nou .bashrc – fie în mod explicit source ~/.bashrc în terminalul curent, fie să deschideți o nouă fereastră de terminal –  > Por TJ Ellis.
giveJob

Utilizați această procedură pentru a crea un env virtual în ubuntu

Pasul 1

Instalați pip

   sudo apt-get install python-pip

Pasul 2

Instalați virtualenv

   sudo pip install virtualenv

pasul 3

Creați un dir pentru a stoca virtualenv-urile (eu folosesc ~/.virtualenvs)

   mkdir ~/.virtualenvs

sau folosiți această comandă pentru a instala o anumită versiune de python în env.

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

Pasul 4

   sudo pip install virtualenvwrapper

Pasul 5

   sudo nano ~/.bashrc

pasul 6

Adăugați acest cod de două linii la sfârșitul fișierului bashrc

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

pasul 7

Deschideți un nou terminal (recomandat)

pasul 8

Creați un nou virtualenv

  mkvirtualenv myawesomeproject

pasul 9

Pentru a încărca sau a trece de la un virtualenv la altul, utilizați comanda workon:

  workon myawesomeproject

pasul 10

Pentru a ieși din noul virtualenv, utilizați

 deactivate

și asigurați-vă că utilizați pip vs pip3

SAU urmați pașii de mai jos pentru a instala mediul virtual folosind python3

Instalați env

python3 -m venv my-project-env

și activați mediul virtual utilizând următoarea comandă:

source my-project-env/bin/activate

sau dacă doriți o anumită versiune python

virtualenv --python=python3.7.5 myenv

Xen_mar

Pentru că tocmai am trecut printr-o tărășenie, o să încerc să scriu răspunsul pe care mi l-aș fi dorit acum două ore. Acesta este pentru cei care nu vor doar soluția copy&paste

În primul rând: Vă întrebați de ce copierea și lipirea căilor de acces funcționează pentru unii oameni, în timp ce pentru alții nu funcționează?** Motivul principal, soluțiile diferă sunt versiunile diferite de python, 2.x sau 3.x. Există de fapt versiuni distincte de virtualenv și virtualenvwrapper care funcționează fie cu python 2 sau 3. Dacă sunteți pe python 2, instalați așa:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

Dacă intenționați să folosiți python 3, instalați versiunile python 3 aferente.

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

Ați instalat cu succes pachetele pentru versiunea dumneavoastră de python și sunteți gata, nu-i așa? Ei bine, încercați. Tastați workon în terminalul dumneavoastră. Terminalul dvs. nu va fi capabil să găsească comanda (workon este o comandă a virtualenvwrapper). Bineînțeles că nu o va face. Workon este un executabil care vă va fi disponibil doar după ce încărcați/sursează fișierul virtualenvwrapper.sh. Dar aplicația oficială ghid de instalare te-a acoperit în această privință, nu?. Doar deschideți fișierul .bash_profile și inserați următoarele, se spune în documentație:

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

Mai ales comanda source /usr/local/bin/virtualenvwrapper.sh pare utilă, deoarece comanda pare să încarce/să ia ca sursă fișierul dorit virtualenvwrapper.sh care conține toate comenzile cu care doriți să lucrați, cum ar fi workon și mkvirtualenv. Dar da, nu. Atunci când urmați ghidul oficial de instalare, este foarte probabil să primiți eroarea din postarea inițială: mkvirtualenv: command not found. Tot nu se găsește nicio comandă și ești în continuare frustrat. Deci, care este problema aici? Problema este că virtualenvwrapper.sh nu se află acolo unde îl căutați în acest moment. Vă reamintesc pe scurt … căutați aici:

source /usr/local/bin/virtualenvwrapper.sh

Dar există o modalitate destul de simplă de a găsi fișierul dorit. Doar tastați

which virtualenvwrapper

în terminal. Acest lucru va căuta în fișierul dvs. PATH pentru fișier, deoarece este foarte probabil ca acesta să se afle într-un dosar inclus în PATH al sistemului dumneavoastră.

Dacă sistemul dvs. este foarte exotic, fișierul dorit se va ascunde în afara unui dosar PATH. În acest caz, puteți găsi calea de acces la virtalenvwrapper.sh cu ajutorul comenzii shell find / -name virtualenvwrapper.sh

Rezultatul dvs. poate arăta cam așa: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.shFelicitări. You have found your missing file!. Acum tot ce trebuie să faceți este să schimbați o comandă în fișierul .bash_profile. Doar schimbați:

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

în:

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

Felicitări. Virtualenvwrapper funcționează acum pe sistemul dumneavoastră. Dar mai puteți face încă un lucru pentru a vă îmbunătăți soluția. Dacă ați găsit fișierul virtualenvwrapper.sh cu comanda which virtualenvwrapper.sh știți că acesta se află în interiorul unui folder din PATH. Așadar, dacă scrieți doar numele fișierului, sistemul de fișiere va presupune că fișierul se află în interiorul unui dosar PATH. Astfel, nu trebuie să scrieți calea completă. Scrieți doar:

source "virtualenvwrapper.sh"

Asta este. Nu mai sunteți frustrat. V-ați rezolvat problema. Să sperăm.

Comentarii

  • De fapt, tocmai am copiat și am lipit soluția ta…  > Por johnny 5.
leastgrebe

Folosind Git Bash pe Windows 10 și Python36 pentru Windows am găsit virtualenvwrapper.sh într-un loc ușor diferit și rularea acestuia a rezolvat problema

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

Comentarii

  • Folosind Windows 10, Git Bash și Python 3.8, pentru mine a fost pornit: /c/Users/[myUserName]/AppData/Roaming/Python/Python38/Scripts –  > Por Manur.
tsveti_iko

Pentru a instala cu succes virtualenvwrapper pe Ubuntu 18.04.3 trebuie să faceți următoarele:

  1. Instalați virtualenv

    sudo apt install virtualenv
    
  2. Instalați virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
    
  3. Adăugați următoarele la sfârșitul fișierului .bashrc fișierului

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
    
  4. Executați fișierul .bashrc fișier

    source ~/.bashrc
    
  5. Creați virtualenv-ul dvs.

    mkvirtualenv your_virtualenv
    

Comentarii

  • Funcționează și pe Ubuntu 20.04. O mică corecție totuși: WORKON_HOME=~/.virtualenvs este implicit. Nu este nevoie să setați asta. VIRTUALENVWRAPPER_PYTHON=/usr/bin/python este, de asemenea, implicit, dar atunci când se utilizează python3, acest lucru este util. de asemenea, ar trebui să se utilizeze export PATH="$HOME/.local/bin:$PATH" pentru căile binare python –  > Por scones.
Eugene Zalivadnyi

Pe Windows 7 și Git Bash acest lucru mă ajută:

  1. Creați un ~/.bashrc (în dosarul de acasă al utilizatorului)
  2. Adăugați linia export WORKON_HOME=$HOME/.virtualenvs (trebuie să creați acest folder dacă nu există)
  3. Adăugați linia source „C:Program Files(x86)Python36-32Scriptsvirtualenvwrapper.sh” (schimbați calea pentru virtualenvwrapper.sh)

Reporniți git bash-ul dvs. și comanda mkvirtualenv va funcționa acum foarte bine.

Mahan

Mi-am rezolvat problema în sistemul de operare Ubuntu 14.04 cu python 2.7.6, adăugând mai jos două linii în fișierele ~/.bash_profile (sau ~/.bashrc în unix).

sursa „/usr/local/bin/virtualenvwrapper.sh”

export WORKON_HOME=”/opt/virtual_env/”

Și apoi executând aceste două linii pe terminal.

Ayoub_DATA

Pe Windows 10, pentru a crea mediul virtual, înlocuiesc „pip mkvirtualenv myproject” cu „mkvirtualenv myproject” și asta funcționează bine.