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" ( значение по умолчанию ) позволяет устанавливать частные
виртуальные виртуальные серверы
1
При установке с помощью менеджера пакетов вашего дистрибутива, файлы будут находиться /usr/binвместо /usr/local/bin. Как правило, не следует предполагать, что будет найдено одно или другое; это одна из причин, по которой у нас есть PATHпеременная.
tripleee
Этот ответ был основан на установке virtualenvwrapper с помощью pip, что я предпочитаю делать.
Майк Пеннингтон
Сначала его нужно установить,pip install virtualenvwrapper
Эдди
WORKON_HOMEне является обязательным и не имеет ничего общего с решением.
булочки
55

Пытаться:

source `which virtualenvwrapper.sh`

Обратные кавычки представляют собой подстановку команд - они берут все, что выводит программа, и помещают это в выражение. В этом случае "which" проверяет $ PATH, чтобы найти virtualenvwrapper.sh, и выводит путь к нему. Затем сценарий считывается оболочкой через «источник».

Если вы хотите, чтобы это происходило каждый раз при перезапуске оболочки, возможно, лучше сначала получить вывод команды which, а затем поместить строку «source» в оболочку, примерно так:

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

^ Это может немного отличаться в зависимости от вашей оболочки. Кроме того, будьте осторожны, чтобы не использовать одиночный>, так как это приведет к усечению вашего ~ / .profile: -o

Эрих
источник
4
Хотя это может быть ценным советом для решения проблемы, на самом деле для ответа требуется немного больше деталей, чем это. Пожалуйста, отредактируйте, чтобы объяснить, как это решит проблему. Кроме того, вы можете написать это как комментарий.
Тоби Спейт
1
Это решило мою проблему. Но кто-нибудь объяснит, почему и как?
h0r53
1
Обратные кавычки представляют собой подстановку команд - они берут все, что выводит программа, и помещают это в выражение. В этом случае "which" проверяет $ PATH, чтобы найти virtualenvwrapper.sh, и выводит путь к нему. Затем сценарий считывается оболочкой через «источник».
Эрих
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"?
Gregology
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. Установка оболочки виртуальной среды О оболочке виртуальной среды

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

После установки необходимых компонентов вам необходимо запустить оболочку виртуальной среды для создания виртуальной среды. Ниже приведены шаги -

  1. установить каталог виртуальной среды в переменной пути - export WORKON_HOME=(directory you need to save envs)

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

Как упоминалось @Mike, источник `which virtualenvwrapper.sh` или which virtualenvwrapper.shможет использоваться для поиска файла virtualenvwrapper.sh.

Лучше всего поместить две строки выше в ~ / .bashrc, чтобы избежать выполнения вышеуказанных команд каждый раз, когда вы открываете новую оболочку. Это все, что вам нужно для создания среды с помощью mkvirtualenv

О чем следует помнить -

  • В Ubuntu вам может потребоваться установить virtualenv и virtualenvwrapper от имени пользователя root. Просто добавьте префикс к команде выше sudo.
  • В зависимости от процесса, используемого для установки virtualenv, путь к virtualenvwrapper.sh может различаться. Найдите подходящий путь, запустив $ find / usr -name virtualenvwrapper.sh. Отрегулируйте строку в вашем .bash_profile или .bashrc скрипте соответственно.
Кешав
источник
1
Добавление заметки. На ubuntu 18.04 мне пришлось перезагрузиться после установки, и тогда все заработало.
Дэн Гран
@screenmutt Спасибо за ценный вклад. Возможно, я пропустил это, так как использую ubuntu 16.04. Однако я хотел бы знать, после какого шага вам пришлось перезагружаться? Это после установки пакетов pip или после настройки «каталога виртуальной среды»?
Кешав
После установки обертки. После этого все заработало.
Дэн Гран
1
@DanGrahn, вам не нужно перезагружаться, просто нужно перезапустить .bashrc- либо явно source ~/.bashrcв вашем текущем терминале, либо открыть новое окно терминала
TJ Ellis
12

Используйте эту процедуру для создания виртуального env в ubuntu

шаг 1

Установить пип

   sudo apt-get install python-pip

шаг 2

Установить virtualenv

   sudo pip install virtualenv

шаг 3

Создайте каталог для хранения ваших виртуальных файлов (я использую ~ / .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

Создать новый virtualenv

  mkvirtualenv myawesomeproject

шаг 9

Чтобы загрузить виртуальные виртуальные серверы или переключаться между ними, используйте команду workon:

  workon myawesomeproject

шаг 10

Чтобы выйти из нового виртуального окружения, используйте

 deactivate

и убедитесь, что используете pip vs pip3

ИЛИ выполните следующие действия, чтобы установить виртуальную среду с помощью python3

Установить env

python3 -m venv my-project-env

и активируйте свою виртуальную среду с помощью следующей команды:

source my-project-env/bin/activate
giveJob
источник
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"

Это оно. Вы больше не разочарованы. Вы решили свою проблему. С надеждой.

Xen_mar
источник
Я просто скопировал и опубликовал ваше решение
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. Создайте свой virtualenv

    mkvirtualenv your_virtualenv
tsveti_iko
источник
работает и на 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. Добавьте строку export 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», и это хорошо работает.

Ayoub_DATA
источник