bash: mkvirtualenv: nie znaleziono polecenia

100

Po wykonaniu instrukcji zawartych w virtualenvwrapperpoście Douga Hellmana nadal nie mogłem uruchomić środowiska testowego.

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

Należy zauważyć, że używam WORKON_HOMEtego nie ma w moim $HOME. Próbowałem szukać, /usr/local/bin/virtualenvwrapper.shjak pokazano w virtualenvwrapperdokumentacji instalacyjnej , ale nie istnieje.

Używam CentOS 6 i Pythona 2.6.6, jeśli to ma znaczenie.


# File: ~/.bash_profile
# ...

export WORKON_HOME="/opt/virtual_env/"
source "/opt/virtual_env/bin/virtualenvwrapper_bashrc"
Mike Pennington
źródło

Odpowiedzi:

107

Rozwiązanie 1 :

Z jakiegoś powodu virtualenvwrapper.shzainstalowano w /usr/bin/virtualenvwrapper.shzamiast pod /usr/local/bin.

W moich .bash_profilepracach ...

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

Wydaje się, że moja instalacja działa dobrze bez pozyskiwania źródeł virtualenvwrapper_bashrc

Rozwiązanie 2 :

Alternatywnie, jak wspomniano poniżej, możesz wykorzystać szansę, która virtualenvwrapper.shjest już w twojej powłoce PATHi po prostu wydać pliksource `which virtualenvwrapper.sh`

Mike Pennington
źródło
5
Ustawienie WORKON_HOMEna „~ / .virtualenvs” ( wartość domyślna ) pozwala na ustawienie prywatnych virtualenvs
Pierre de LESPINAY
1
Jeśli instalujesz za pomocą menedżera pakietów swojej dystrybucji, pliki będą w /usr/binzamiast /usr/local/bin. Generalnie nie powinieneś zakładać, że jedno lub drugie zostanie znalezione; to jeden z powodów, dla których mamy PATHzmienną.
tripleee
Ta odpowiedź była oparta na zainstalowaniu virtualenvwrappera z pip, co wolę robić.
Mike Pennington
Najpierw trzeba go zainstalować,pip install virtualenvwrapper
Eddie,
WORKON_HOMEjest opcjonalna i nie ma nic wspólnego z rozwiązaniem.
bułeczki
55

Próbować:

source `which virtualenvwrapper.sh`

Backticks to podstawianie poleceń - pobierają wszystko, co program wydrukuje, i umieszczają to w wyrażeniu. W tym przypadku "który" sprawdza $ PATH, aby znaleźć virtualenvwrapper.sh i wyświetla ścieżkę do niego. Skrypt jest następnie odczytywany przez powłokę za pośrednictwem „źródła”.

Jeśli chcesz, aby tak się działo za każdym razem, gdy restartujesz powłokę, prawdopodobnie lepiej jest najpierw pobrać dane wyjściowe z polecenia „which”, a następnie umieścić wiersz „source” w powłoce, coś takiego:

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

^ Może się nieznacznie różnić w zależności od posiadanej powłoki. Uważaj również, aby nie używać pojedynczego znaku>, ponieważ spowoduje to obcięcie ~ / .profile: -o

Erich
źródło
4
Chociaż może to być cenna wskazówka, aby rozwiązać problem, odpowiedź naprawdę wymaga nieco więcej szczegółów. Proszę edit wyjaśnić, jak to rozwiąże problem. Alternatywnie, zamiast tego rozważ napisanie tego jako komentarza.
Toby Speight,
1
To rozwiązało mój problem. Ale czy ktoś wyjaśni, dlaczego i jak?
h0r53
1
Backticks to podstawianie poleceń - pobierają wszystko, co program wydrukuje, i umieszczają to w wyrażeniu. W tym przypadku "który" sprawdza $ PATH, aby znaleźć virtualenvwrapper.sh i wyświetla ścieżkę do niego. Skrypt jest następnie odczytywany przez powłokę za pośrednictwem „źródła”.
Erich,
43

Miałem ten sam problem na OS X 10.9.1 z Pythonem 2.7.5. Żadnych problemów ze WORKON_HOMEmną, ale musiałem ręcznie dodawać source "/usr/local/bin/virtualenvwrapper.sh"do ~/.bash_profile(lub ~/.bashrcw systemie UNIX) po uruchomieniupip install virtualenvwrapper

Nick Benes
źródło
1
Gdzie ręcznie dodałeś źródło „/usr/local/bin/virtualenvwrapper.sh”?
Gregology,
1
@Gregology, do którego dodałem tę linię ~/.bash_profile. Zauważ, że kiedy po raz pierwszy go dodasz, będziesz musiał ponownie załadować terminal (który działa .bash_profile) lub po prostu uruchomić to sourcepolecenie bezpośrednio z wiersza poleceń.
Nick Benes,
1
Byłoby bardzo pomocne, gdybyś miał tytuł z nazwą pliku i wyświetlał całą zawartość, aby nie musieć zadawać dodatkowych pytań „Gdzie to umieściłeś?”
JGallardo
1
Niezależnie od tego, czy używasz, .bash_profileczy .bashrcnie jest to bezpośrednio konsekwencja tego, z której platformy korzystasz, chociaż jednej lub drugiej może brakować na niektórych platformach. Zobacz stronę podręcznika Bash, aby poznać ich różnice. Ogólnie rzecz biorąc, powinieneś tego potrzebować tylko w swoim .bash_profile, ale niektóre dystrybucje używają konfiguracji, które komplikują sprawy.
tripleee
25

Wymagania wstępne do wykonania tego polecenia -

  1. PIP (rekurencyjny akronim od P ip ja nstalls P ackages) to system zarządzania pakietami używany do instalacji i zarządzania pakietami oprogramowania napisany w Pythonie. Wiele pakietów można znaleźć w indeksie pakietów języka Python (PyPI).

    sudo apt-get install python-pip

  2. Zainstaluj środowisko wirtualne. Służy do tworzenia środowiska wirtualnego, do instalowania pakietów i zależności wielu projektów odizolowanych od siebie.

    sudo pip zainstaluj virtualenv

  3. Zainstaluj opakowanie środowiska wirtualnego Informacje o opakowaniu środowiska wirtualnego

    sudo pip zainstaluj virtualenvwrapper

Po zainstalowaniu wymagań wstępnych należy uruchomić opakowanie środowiska wirtualnego, aby utworzyć środowisko wirtualne. Oto kroki -

  1. ustaw wirtualny katalog środowiska w zmiennej ścieżki- export WORKON_HOME=(directory you need to save envs)

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

Jak wspomniał @Mike, źródło `które virtualenvwrapper.sh` lub which virtualenvwrapper.shmoże użyć do zlokalizowania pliku virtualenvwrapper.sh.

Najlepiej jest umieścić powyżej dwie linie w ~ / .bashrc, aby uniknąć wykonywania powyższych poleceń za każdym razem, gdy otwierasz nową powłokę. To wszystko, czego potrzebujesz, aby stworzyć środowisko za pomocą mkvirtualenv

Punkty, o których należy pamiętać -

  • W systemie Ubuntu może być konieczne zainstalowanie virtualenv i virtualenvwrapper jako root. Po prostu poprzedz powyższą komendę sudo.
  • W zależności od procesu używanego do instalacji virtualenv ścieżka do virtualenvwrapper.sh może się różnić. Znajdź odpowiednią ścieżkę, uruchamiając $ find / usr -name virtualenvwrapper.sh. Dostosuj odpowiednio linię w swoim skrypcie .bash_profile lub .bashrc.
Keshav
źródło
1
Dodawanie notatki. Na Ubuntu 18.04 musiałem zrestartować komputer po instalacji, a potem zadziałało.
Dan Grahn
@screenmutt Dzięki za cenny wkład. Mogłem to przeoczyć, ponieważ używam Ubuntu 16.04. Chciałbym jednak wiedzieć, po którym kroku trzeba było ponownie uruchomić komputer? Czy jest po zainstalowaniu pakietów pip czy po skonfigurowaniu „katalogu środowiska wirtualnego”?
Keshav,
Po zainstalowaniu owijki. Potem zadziałało.
Dan Grahn
1
@DanGrahn nie musisz restartować, wystarczy uruchomić ponownie .bashrc- jawnie source ~/.bashrcw swoim obecnym terminalu lub otwórz nowe okno terminala
TJ Ellis
11

Ta procedura służy do tworzenia wirtualnego środowiska env w systemie Ubuntu

krok 1

Zainstaluj pip

   sudo apt-get install python-pip

krok 2

Zainstaluj virtualenv

   sudo pip install virtualenv

krok 3

Utwórz katalog do przechowywania twoich virtualenvs (używam ~ / .virtualenvs)

   mkdir ~/.virtualenvs

lub użyj tego polecenia, aby zainstalować określoną wersję języka Python w środowisku env

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

krok 4

   sudo pip install virtualenvwrapper

krok 5

   sudo nano ~/.bashrc

krok 6

Dodaj ten dwuwierszowy kod na końcu pliku bashrc

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

krok 7

Otwórz nowy terminal (zalecane)

krok 8

Utwórz nowy virtualenv

  mkvirtualenv myawesomeproject

krok 9

Aby załadować lub przełączać się między virtualenvami, użyj polecenia workon:

  workon myawesomeproject

krok 10

Aby wyjść z nowego virtualenv, użyj

 deactivate

i upewnij się, że używasz pip vs pip3

LUB wykonaj poniższe kroki, aby zainstalować środowisko wirtualne za pomocą python3

Zainstaluj env

python3 -m venv my-project-env

i aktywuj swoje wirtualne środowisko za pomocą następującego polecenia:

source my-project-env/bin/activate
giveJob
źródło
6

Ponieważ właśnie przeszedłem przez przeciąganie, spróbuję napisać odpowiedź, której życzyłem sobie dwie godziny temu. To jest dla ludzi, którzy nie chcą tylko rozwiązania kopiuj i wklej

Po pierwsze: czy zastanawiasz się, dlaczego kopiowanie i wklejanie ścieżek działa dla niektórych osób, a nie działa dla innych? ** Głównym powodem różnic w rozwiązaniach są różne wersje Pythona, 2.x lub 3.x. W rzeczywistości istnieją różne wersje virtualenv i virtualenvwrapper, które współpracują z Pythonem 2 lub 3. Jeśli korzystasz z Pythona 2, zainstaluj w następujący sposób:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

Jeśli planujesz używać Pythona 3, zainstaluj powiązane wersje Pythona 3

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

Pomyślnie zainstalowałeś pakiety dla swojej wersji Pythona i wszystko gotowe, prawda? Cóż, spróbuj. Wpisz workonw terminalu. Twój terminal nie będzie mógł znaleźć polecenia ( workonjest to polecenie virtualenvwrapper). Oczywiście, że nie. Workonjest plikiem wykonywalnym, który będzie dostępny tylko po załadowaniu / źródle pliku virtualenvwrapper.sh. Ale w oficjalnym przewodniku instalacji omówiłeś to, prawda? Po prostu otwórz swój .bash_profile i wstaw następujące, jak jest napisane w dokumentacji:

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

Szczególnie polecenie source /usr/local/bin/virtualenvwrapper.shwydaje się pomocne, ponieważ wydaje się, że ładuje / tworzy żądany plik, virtualenvwrapper.shktóry zawiera wszystkie polecenia, z którymi chcesz pracować, takie jak workoni mkvirtualenv. Ale tak, nie. Kiedy po oficjalnej instrukcji instalacji, jest bardzo prawdopodobne, aby otrzymać ten błąd z początkowego postu: mkvirtualenv: command not found. Nadal nie znaleziono polecenia i nadal jesteś sfrustrowany. Więc jaki jest problem? Problem polega na tym, że virtualenvwrapper.sh nie jest tam, gdzie go teraz szukasz. Krótkie przypomnienie ... szukasz tutaj:

source /usr/local/bin/virtualenvwrapper.sh

Ale istnieje dość prosty sposób na znalezienie żądanego pliku. Po prostu wpisz

which virtualenvwrapper

do twojego terminala. Spowoduje to wyszukanie pliku w PATH , ponieważ jest bardzo prawdopodobne, że znajduje się on w jakimś folderze zawartym w PATH systemu.

Jeśli twój system jest bardzo egzotyczny, żądany plik ukryje się poza folderem PATH. W takim przypadku możesz znaleźć ścieżkę virtalenvwrapper.shza pomocą polecenia powłokifind / -name virtualenvwrapper.sh

Twój wynik może wyglądać mniej więcej tak: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh Gratulacje. You have found your missing file!. Teraz wszystko, co musisz zrobić, to zmienić jedno polecenie w swoim .bash_profile. Po prostu zmień:

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

do:

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

Gratulacje. Virtualenvwrapper działa teraz w twoim systemie. Ale możesz zrobić jeszcze jedną rzecz, aby ulepszyć swoje rozwiązanie. Jeśli znalazłeś plik virtualenvwrapper.shza pomocą polecenia which virtualenvwrapper.sh, wiesz, że znajduje się on w folderze PATH. Więc jeśli po prostu wpiszesz nazwę pliku, twój system plików przyjmie, że plik znajduje się w folderze PATH. Nie musisz więc pisać pełnej ścieżki. Wystarczy wpisać:

source "virtualenvwrapper.sh"

Otóż ​​to. Nie jesteś już sfrustrowany. Rozwiązałeś swój problem. Ufnie.

Xen_mar
źródło
Właściwie właśnie skopiowałem i przekazałem twoje rozwiązanie
johnny 5
2

Aby pomyślnie zainstalować virtualenvwrapperna Ubuntu 18.04.3, musisz wykonać następujące czynności:

  1. zainstalować virtualenv

    sudo apt install virtualenv
  2. zainstalować virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
  3. Dodaj następujący tekst na końcu .bashrcpliku

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
  4. Uruchom .bashrcplik

    source ~/.bashrc
  5. Stwórz swój virtualenv

    mkvirtualenv your_virtualenv
tsveti_iko
źródło
działa również na ubuntu 20.04. mała korekta tho: WORKON_HOME=~/.virtualenvsjest domyślna. nie trzeba tego ustawiać. VIRTUALENVWRAPPER_PYTHON=/usr/bin/pythonjest również wartością domyślną, ale przy używaniu python3 jest to przydatne. również należy używać export PATH="$HOME/.local/bin:$PATH"dla ścieżek binarnych Pythona
bułeczki
1

W systemie Windows 7 i Git Bash pomaga mi to:

  1. Utwórz plik ~ / .bashrc (w folderze domowym użytkownika)
  2. Dodaj eksport linii WORKON_HOME = $ HOME / .virtualenvs (musisz utworzyć ten folder, jeśli nie istnieje)
  3. Dodaj źródło linii „C: \ Program Files (x86) \ Python36-32 \ Scripts \ virtualenvwrapper.sh” (zmień ścieżkę do pliku virtualenvwrapper.sh)

Zrestartuj polecenie git bash i mkvirtualenv teraz będzie działać dobrze.

Eugene Zalivadnyi
źródło
1

Używając Git Bash na Windows 10 i Python36 dla Windows, znalazłem virtualenvwrapper.sh w nieco innym miejscu i uruchomienie tego rozwiązało problem

source virtualenvwrapper.sh 
/c/users/[myUserName]/AppData/Local/Programs/Python36/Scripts
najmniejgrebe
źródło
0

Rozwiązałem mój problem w systemie Ubuntu 14.04 OS z Pythonem 2.7.6, dodając poniżej dwie linie do plików ~ / .bash_profile (lub ~ / .bashrc w unix).

źródło „/usr/local/bin/virtualenvwrapper.sh”

export WORKON_HOME = "/ opt / virtual_env /"

A następnie wykonanie obu tych linii na terminalu.

Mahan
źródło
0

W systemie Windows 10, aby utworzyć środowisko wirtualne, zamieniam „ pip mkvirtualenv myproject” na „ mkvirtualenv myproject” i to działa dobrze.

Ayoub_DATA
źródło