bash: mkvirtualenv: команда не знайдена


100

Дотримуючись вказівок на посаду Дуга Гелманаvirtualenvwrapper , я все-таки не зміг розпалити тестове середовище.

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

Слід зазначити, що я використовую WORKON_HOMEце не в моїх $HOME. Я намагався шукати, /usr/local/bin/virtualenvwrapper.shяк показано в virtualenvwrapperдокументах про встановлення , але його не існує.

Я запускаю CentOS 6 і python 2.6.6, якщо це має значення.


# File: ~/.bash_profile
# ...

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

Відповіді:


107

Рішення 1 :

Чомусь virtualenvwrapper.shвстановлено в /usr/bin/virtualenvwrapper.sh, а не під /usr/local/bin.

У моїх .bash_profileроботах:

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

Моя установка, здається, працює нормально без пошуку джерел virtualenvwrapper_bashrc

Рішення 2 :

Як зазначено нижче, ви можете скористатись шансом, який virtualenvwrapper.shвже є у вашій оболонці, PATHі просто видатиsource `which virtualenvwrapper.sh`


5
Встановлення WORKON_HOME"~ / .virtualenvs" ( значення за замовчуванням ) дозволяє встановити приватні virtualenvs
Pierre de LESPINAY

1
Якщо ви встановите за допомогою диспетчера пакунків вашого дистрибутива, файли будуть /usr/binзамість них /usr/local/bin. Як правило, ви не повинні вважати, що одне чи інше знайдені; це одна з причин, коли ми маємо PATHзмінну.
tripleee

Ця відповідь ґрунтувалася на встановленні virtualenvwrapper з pip, що я вважаю за краще робити.
Майк Пеннінгтон

Його потрібно встановити спочатку,pip install virtualenvwrapper
Едді

WORKON_HOMEнеобов’язково і не має нічого спільного з рішенням.
scones

55

Спробуйте:

source `which virtualenvwrapper.sh`

Повернення - це підміна команд - вони беруть те, що програма надрукує, і помістять їх у вираз. У цьому випадку ", який" перевіряє $ PATH, щоб знайти virtualenvwrapper.sh і виводить шлях до нього. Потім сценарій зчитується оболонкою через 'source'.

Якщо ви хочете, щоб це відбувалося щоразу, коли ви перезавантажуєте оболонку, можливо, спочатку краще схопити вихід із команди "який", а потім помістити рядок "джерело" у свою оболонку, приблизно так:

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

^ Це може дещо відрізнятися від вашої оболонки. Крім того, будьте обережні, щоб не використовувати єдиний>, оскільки це уріже ваш ~ / .profile: -o


4
Хоча це може бути цінним підказом для вирішення проблеми, відповідь дійсно потребує трохи детальніше, ніж ця. Будь ласка , редагувати , щоб пояснити , як це буде вирішувати цю проблему. Крім того, розгляньте, як написати це замість цього.
Toby Speight

1
Це вирішило мою проблему. Але хтось пояснить, чому і як?
h0r53

1
Повернення - це підміна команд - вони беруть те, що програма надрукує, і помістять їх у вираз. У цьому випадку ", який" перевіряє $ PATH, щоб знайти virtualenvwrapper.sh і виводить шлях до нього. Потім сценарій зчитується оболонкою через 'source'.
Еріх

43

У мене була така ж проблема в OS X 10.9.1 з python 2.7.5. Жодних проблем WORKON_HOMEдля мене немає, але мені довелося вручну додавати source "/usr/local/bin/virtualenvwrapper.sh"до ~/.bash_profile(або ~/.bashrcв unix) після того, як я забігpip install virtualenvwrapper


1
Де ви вручну додали джерело "/usr/local/bin/virtualenvwrapper.sh"?
Грегологія

1
@Gregology Я додав цей рядок до ~/.bash_profile. Зверніть увагу, що коли ви вперше додасте його, вам доведеться або перезавантажити термінал (який працює .bash_profile), або просто запустити цю sourceкоманду безпосередньо з командного рядка.
Нік Бенес

1
Було б дуже корисно, якби у вас був заголовок із назвою файлу та відображався весь вміст, тому вам не доведеться отримувати подальші запитання про те, "де ви його помістили?"
JGallardo

1
Незалежно від того, використовуєте ви .bash_profileчи .bashrcне є насправді безпосередньо наслідком того, на якій платформі ви використовуєтесь, хоча на одних платформах може бути відсутня та чи інша. Про їх відмінності див. На сторінці керівництва Bash. Як правило, вам це справді потрібно справді .bash_profile, але деякі дистрибутиви використовують установки, які ускладнюють питання.
tripleee

25

Передумови для виконання цієї команди -

  1. pip (рекурсивна абревіатура P ip I nstalls P ackages) - система управління пакетами, яка використовується для встановлення та управління програмними пакетами, написаними на Python. Багато пакунків можна знайти в індексі пакетів Python (PyPI).

    sudo apt-get install python-pip

  2. Встановити віртуальне середовище. Використовується для створення віртуального середовища, для встановлення пакетів і залежностей декількох проектів, ізольованих один від одного.

    sudo pip встановити virtualenv

  3. Встановити віртуальну обгортку середовища Про віртуальну обгортку env

    sudo pip встановити virtualenvwrapper

Після встановлення передумов вам потрібно привести віртуальну обгортку в дію для створення віртуального середовища. Наступні кроки -

  1. встановити каталог віртуального середовища в змінному шляху- export WORKON_HOME=(directory you need to save envs)

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

Як згадує @Mike, джерело `який virtualenvwrapper.sh` або which virtualenvwrapper.shможе використовуватись для пошуку файла virtualenvwrapper.sh.

Краще розмістити вище двох рядків у ~ / .bashrc, щоб уникнути виконання вищезазначених команд кожного разу, коли ви відкриваєте нову оболонку. Це все, що потрібно для створення середовища за допомогою mkvirtualenv

Бали, які потрібно пам’ятати -

  • Під Ubuntu вам може знадобитися встановити virtualenv та virtualenvwrapper як root. Просто вставте приставку до команди вище.
  • Залежно від процесу, який використовується для встановлення virtualenv, шлях до virtualenvwrapper.sh може відрізнятися. Знайдіть відповідний шлях, запустивши $ find / usr -name virtualenvwrapper.sh. Відповідно відрегулюйте рядок у вашому сценарії .bash_profile або .bashrc.

1
Додавання примітки. У ubuntu 18.04 мені довелося перезавантажуватись після встановлення, і тоді це спрацювало.
Dan Grahn

@screenmutt Дякую за цінний внесок. Я, можливо, пропустив це, використовуючи ubuntu 16.04. Однак я хотів би знати, після якого кроку вам довелося перезавантажуватись? Це після встановлення пакетів pip або після налаштування "каталогу віртуальної середовища"?
Кешав

Після встановлення обгортки. Це спрацювало після цього.
Дан Гран

1
@DanGrahn вам не потрібно перезавантажуватись, потрібно лише повторно запуститись .bashrc- або явно source ~/.bashrcу вашому поточному терміналі, або відкрити нове вікно терміналу
TJ Ellis

10

Використовуйте цю процедуру для створення віртуальної env в ubuntu

крок 1

Встановити піп

   sudo apt-get install python-pip

крок 2

Встановіть virtualenv

   sudo pip install virtualenv

крок 3

Створіть dir для зберігання своїх virtualenvs (я використовую ~ / .virtualenvs)

   mkdir ~/.virtualenvs

або скористайтеся цією командою для встановлення конкретної версії python у env

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

крок 4

   sudo pip install virtualenvwrapper

крок 5

   sudo nano ~/.bashrc

крок 6

Додайте цей два рядкового коду в кінці файлу bashrc

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

крок 7

Відкрити новий термінал (рекомендується)

крок 8

Створіть новий віртуаленв

  mkvirtualenv myawesomeproject

крок 9

Щоб завантажити або переключитись між virtualenvs, використовуйте команду workon:

  workon myawesomeproject

крок 10

Щоб вийти з нового нового virtualenv, використовуйте

 deactivate

і переконайтеся, що використовуєте pip vs pip3

АБО виконайте наведені нижче кроки, щоб встановити віртуальне середовище за допомогою python3

Встановити env

python3 -m venv my-project-env

та активуйте ваше віртуальне середовище за допомогою наступної команди:

source my-project-env/bin/activate

6

Оскільки я щойно перетягнувся, я спробую написати відповідь, яку я хотів би дві години тому. Це для людей, які не хочуть просто копіювати та вставляти рішення

По-перше: Вам цікаво, чому копіювання та вставка контурів працює для деяких людей, а для інших не працює? ** Основна причина рішення відрізняється в різних версіях python, 2.x або 3.x. Насправді існують різні версії virtualenv та virtualenvwrapper, які працюють з python 2 або 3. Якщо ви працюєте на python 2, встановіть так:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

Якщо ви плануєте використовувати python 3, встановіть відповідні версії python 3

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

Ви успішно встановили пакунки для вашої версії python і все налаштовано, правда? Ну, спробуйте. Введіть workonу свій термінал. Ваш термінал не зможе знайти команду ( workonце команда virtualenvwrapper). Звичайно, це не стане. Workonце виконуваний файл, який буде доступний вам лише після завантаження / джерела файлу virtualenvwrapper.sh. Але офіційне керівництво з монтажу ви висвітлювали саме це, правда? Просто відкрийте .bash_profile і вставте наступне, про що йдеться в документації:

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

Особливо команда source /usr/local/bin/virtualenvwrapper.shздається корисною, оскільки команда, здається, завантажує / джерело потрібного файлу, virtualenvwrapper.shякий містить усі команди, з якими потрібно працювати, як workonі mkvirtualenv. Але так, ні. Коли після офіційного керівництва по установці ви дуже ймовірно отримати помилку з початкового поста: mkvirtualenv: command not found. Досі жодної команди не знайдено, і ви все ще розчаровані. То в чому тут проблема? Проблема в тому, що virtualenvwrapper.sh - це не те, що ви шукаєте саме зараз. Коротке нагадування ... Ви шукаєте тут:

source /usr/local/bin/virtualenvwrapper.sh

Але є досить прямий шлях до пошуку потрібного файлу. Просто введіть

which virtualenvwrapper

до вашого терміналу. Це дозволить здійснити пошук у файлі PATH , оскільки дуже ймовірно, що він знаходиться в якійсь папці, яка включена у систему PATH вашої системи.

Якщо ваша система дуже екзотична, потрібний файл буде сховатися поза папкою PATH. У цьому випадку ви можете знайти шлях до virtalenvwrapper.shкоманди оболонкиfind / -name virtualenvwrapper.sh

Ваш результат може виглядати приблизно так: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh Вітаємо. You have found your missing file!. Тепер все, що вам потрібно зробити, це змінити одну команду у вашому .bash_profile. Просто змініть:

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

до:

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

Вітаю. Virtualenvwrapper зараз працює у вашій системі. Але ви можете зробити ще одну річ, щоб покращити своє рішення. Якщо ви знайшли файл virtualenvwrapper.shіз командою, which virtualenvwrapper.shто знаєте, що він знаходиться всередині папки PATH. Отже, якщо ви просто напишите ім'я файлу, ваша файлова система припустить, що файл знаходиться всередині папки PATH. Тож вам не доведеться виписувати весь шлях. Просто введіть:

source "virtualenvwrapper.sh"

Це воно. Ви більше не засмучуєтесь. Ви вирішили свою проблему. Сподіваємось.


Я насправді просто скопіював і скопіював ваше рішення
johnny 5

2

Для успішного встановлення virtualenvwrapperна Ubuntu 18.04.3 вам потрібно зробити наступне:

  1. Встановити virtualenv

    sudo apt install virtualenv
  2. Встановити virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
  3. Додайте наступне до кінця .bashrcфайлу

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
  4. Виконати .bashrcфайл

    source ~/.bashrc
  5. Створіть свій віртуаленв

    mkvirtualenv your_virtualenv

працює і на ubuntu 20.04. невелика корекція tho: WORKON_HOME=~/.virtualenvsє типовим. не потрібно цього встановлювати. VIRTUALENVWRAPPER_PYTHON=/usr/bin/pythonтакож є типовим, але при використанні python3 це корисно. також слід використовувати export PATH="$HOME/.local/bin:$PATH"для бінарних шляхів python
scones

1

У Windows 7 та Git Bash це допомагає мені:

  1. Створіть файл ~ / .bashrc (під домашньою папкою користувача)
  2. Додати експорт рядків WORKON_HOME = $ HOME / .virtualenvs (ви повинні створити цю папку, якщо її немає)
  3. Додати джерело рядка "C: \ Program Files (x86) \ Python36-32 \ Scripts \ virtualenvwrapper.sh" (змінити шлях для virtualenvwrapper.sh)

Перезапустіть команду git bash та mkvirtualenv, зараз буде добре працювати.


1

Використовуючи Git Bash у Windows 10 та Python36 для Windows, я знайшов virtualenvwrapper.sh у дещо іншому місці та запустивши це вирішив проблему.

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

0

Вирішив мою проблему в ОС Ubuntu 14.04 з python 2.7.6, додавши нижче два рядки у файли ~ / .bash_profile (або ~ / .bashrc в unix).

джерело "/usr/local/bin/virtualenvwrapper.sh"

експортувати WORKON_HOME = "/ opt / virtual_env /"

А потім виконати обидві ці лінії на терміналі.


0

У Windows 10, щоб створити віртуальне середовище, я замінюю " pip mkvirtualenv myproject" на " mkvirtualenv myproject", і це добре працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.