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

Я новичок в виртуальных средах Python, поэтому после прочтения этого руководства я попытался создать моя первая среда с использованием virtualenvwrapper. Моя установка python3 сейчас находится на голых костях:

$ pip3 list
argparse (1.2.1)
pip (1.5.6)
setuptools (2.1)
stevedore (0.15)
virtualenv (1.11.6)
virtualenv-clone (0.2.5)
virtualenvwrapper (4.3.1)

Как было предложено в руководстве, я добавил следующие строки в свой файл .bashrc:

export WORKON_HOME=$HOME/.virtualenvs
source /Library/Frameworks/Python.framework/Versions/3.4/bin/virtualenvwrapper_lazy.sh

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

Last login: Wed Sep 10 22:33:17 on ttys006
-bash: _VIRTUALENVWRAPPER_API: unbound variable
-bash: VIRTUALENVWRAPPER_SCRIPT: unbound variable
-bash: VIRTUALENVWRAPPER_SCRIPT: unbound variable
-bash: _VIRTUALENVWRAPPER_API: unbound variable
-bash: _VIRTUALENVWRAPPER_API: unbound variable
complete: usage: complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...]

Я не понимаю, в чем проблема, но очевидно, что строка source /Library/Frameworks/Python.framework/Versions/3.4/bin/virtualenvwrapper_lazy.sh не работает, потому что тогда я даже не могу найти команду mkvirtualenv:

$ mkvirtualenv test1 -p /usr/bin/python3.3
-bash: mkvirtualenv: command not found

Я нашел эту запись и этот с похожими проблемами, но ни один из них не дал мне решения.


person aaragon    schedule 10.09.2014    source источник
comment
Что еще находится в вашем .bashrc файле?   -  person Etan Reisner    schedule 11.09.2014
comment
В моем файле .bashrc много всего, результат многолетней работы по добавлению разных команд и функций то тут, то там.   -  person aaragon    schedule 11.09.2014
comment
Ты set -u там?   -  person Etan Reisner    schedule 11.09.2014
comment
Да, set -o nounset это set -u. Это будет проблемой здесь. Преобладание скриптов не предполагает запуска с этим набором, поскольку он приводит к сбою многих идиоматических действий. Отключите это и посмотрите, начнет ли он работать.   -  person Etan Reisner    schedule 11.09.2014
comment
Теперь у меня есть ERROR: virtualenvwrapper_lazy.sh: Could not find virtualenvwrapper.sh, и я думаю, это потому, что сценарий virtualenvwrapper.sh не находится на пути по умолчанию?   -  person aaragon    schedule 11.09.2014
comment
Хотя теперь он распознает команду mkvirtualenv, но, похоже, она не работает: $ mkvirtualenv test1 -bash: : No such file or directory [Process completed]. После того, как я вижу это сообщение [Process completed], я ничего не могу сделать с Терминалом.   -  person aaragon    schedule 11.09.2014
comment
Это сообщение означает, что ваша оболочка завершает работу (и ваш терминал сообщает вам, что сеанс мертв), предположительно из-за того, что mkvirtualenv сделал что-то (вероятно, неправильно). Идея PATH выглядит так, как будто она может быть правильной (если файл, на который я смотрю, тот, который у вас есть). Я не знаю, что конкретно может пойти не так с mkvirtualenv.   -  person Etan Reisner    schedule 11.09.2014
comment
На тебе нет errexit, не так ли?   -  person Etan Reisner    schedule 11.09.2014
comment
Я не установил ничего, связанного с errexit в моем файле .bashrc, просто когда я открываю новое окно терминала, я получаю сообщение Last login: Wed Sep 10 23:25:04 on ttys000 ERROR: virtualenvwrapper_lazy.sh: Could not find virtualenvwrapper.sh.   -  person aaragon    schedule 11.09.2014
comment
Измените свой PATH, чтобы which мог найти этот скрипт и посмотреть, все ли он исправляет?   -  person Etan Reisner    schedule 11.09.2014
comment
Кажется, моя переменная PATH уже имеет этот каталог, 3 раза... =/ и я даже не добавляю этот путь в файл .bashrc. $ echo $PATH /Library/Frameworks/Python.framework/Versions/3.4/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/Users/aaragon/Local/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/MacGPG2/bin:/usr/texbin. Итак, я могу сделать which virtualenvwrapper.sh, и он найдет его.   -  person aaragon    schedule 11.09.2014
comment
Есть ли он до источника virtualenvwrapper_lazy.sh?   -  person Etan Reisner    schedule 11.09.2014
comment
Это было после, поэтому я исправил это, и теперь команда работает. Тем не менее, я не думаю, что смогу создать среду: $ mkvirtualenv --python=/usr/local/bin/python3 pydev Running virtualenv with interpreter /usr/local/bin/python3 Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4' New python executable in pydev/bin/python3 Also creating executable in pydev/bin/python Installing setuptools, pip...done. /usr/bin/python: No module named virtualenvwrapper   -  person aaragon    schedule 11.09.2014
comment
Эта ошибка появляется, когда я пытаюсь workon создать среду: $ workon pydev /usr/bin/python: No module named virtualenvwrapper /usr/bin/python: No module named virtualenvwrapper. Ну, я не устанавливал virtualenvwrapper с python, а только в python3.   -  person aaragon    schedule 11.09.2014
comment
Решает ли настройка VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 эту проблему? Я должен отметить, что я собираю все это, просматривая рассматриваемые сценарии. Я также должен сказать, что явно что-то не так либо с вашей настройкой, либо с самим virtualenv, если требуется такая большая возня. Возможно, имеет смысл найти людей, которые действительно знают/работают с virtualenv, чтобы посмотреть, что они из всего этого делают.   -  person Etan Reisner    schedule 11.09.2014
comment
После установки этой переменной среды все становится еще хуже, потому что теперь, когда я набираю workon pydev, я снова получаю сообщение [Process completed], и терминал больше не работает.   -  person aaragon    schedule 11.09.2014
comment
Как я уже говорил, [Process completed] означает, что оболочка, запущенная в этом окне, завершила работу (каким-то образом это не привело к закрытию окна, так что, возможно, это нечистый выход). Кроме того, как я уже сказал, я думаю, что что-то не так либо с вашей системой, либо с самой virtualenv, но я не могу оценить virtualenv сторону вещей, а более глубокое изучение настроек вашей системы - сложный процесс. Извиняюсь.   -  person Etan Reisner    schedule 11.09.2014
comment
Наконец-то я смог заставить его работать. Я взял свой файл .bashrc и почистил, удалил все, что мне не нужно. Теперь он работает нормально, но я все еще думаю, что процесс создания virtualenvwrapper будет болезненным, так как вам нужно добавить что-то в свой файл профиля.   -  person aaragon    schedule 11.09.2014
comment
Я укажу, что есть причина, по которой я спросил, что было в нем в начале всего этого. =) Мне любопытно, если вы готовы поделиться, что все, что вы удалили, могло вызвать эти бесчисленные проблемы.   -  person Etan Reisner    schedule 11.09.2014
comment
Итак, я зашел на этот веб-сайт и взял оттуда много вещей, которые Я смешал со своим старым .bashrc. Я потратил на это все утро, в конце концов, я попробовал virtualenvwrapper, и он уже работал, но я действительно не знаю, что это исправило. Я могу выслать вам обе версии файла .bashrc, если хотите.   -  person aaragon    schedule 11.09.2014
comment
Ничто там не выглядит слишком вредным, хотя функция cd и псевдоним which, безусловно, могут вызвать некоторые проблемы.   -  person Etan Reisner    schedule 11.09.2014
comment
Я помню, как функция which вызывалась в virtualenvwrapper_lazy.sh. Но я не думаю, что это было проблемой, потому что у меня все еще есть этот псевдоним, и теперь он работает.   -  person aaragon    schedule 11.09.2014


Ответы (3)


Я добавил следующее в свой .bashrc, ссылаясь на это

export PATH=/usr/local/bin:$PATH
source /usr/local/bin/virtualenvwrapper.sh

Теперь mkvirtualenv работает-

pkoli@pkoli-SVE15136CNB:~/Desktop$ mkvirtualenv BUGS
Using base prefix '/usr'
New python executable in BUGS/bin/python3
Also creating executable in BUGS/bin/python
Installing setuptools, pip...done.
person pkoli    schedule 24.03.2015
comment
Для моей Kubuntu он был установлен здесь: /usr/share/virtualenvwrapper/virtualenvwrapper.sh - person caprica; 02.08.2015

Я столкнулся с той же проблемой, и я исправил ее, следуя руководству:

http://exponential.io/blog/2015/02/10/install-virtualenv-and-virtualenvwrapper-on-ubuntu/

Часть 1. Установите необходимые пакеты

sudo apt-get install python-pip python-dev build-essential

sudo pip install virtualenv virtualenvwrapper

sudo pip install --upgrade pip

Часть 2: Настройте virtualenvwrapper в ~/.bashrc.

Я использовал vim для редактирования ~/.bashrc.

Во-первых, установите vim с помощью команды:

sudo apt-get install vim

Во-вторых, отредактируйте ~/.bashrc

vi .bashrc

enter [Shift] + [g] //G (shift + g): to go the end of the file

enter [a] //Type a to edit the file

Затем вставьте три строки:

export WORKON_HOME=~/virtualenvs

export VIRTUALENVWRAPPER_PYTHON=[link-to-python-folder]

source /usr/local/bin/virtualenvwrapper.sh

где [link-to-python-folder] может быть, например:

  • если вы используете python 3,

export VIRTUALENVWRAPPER_PYTHON=/user/bin/python3

  • если вы используете python 2,

export VIRTUALENVWRAPPER_PYTHON=/user/bin/python

Далее enter [Esc] then :wq

Клавиша Esc означает возврат в командную строку, :wq означает сохранение изменений и выход из vi.

Часть 3. Включите виртуальную среду.

source ~/.bashrc

mkdir -p $WORKON_HOME

Теперь вы можете повторить попытку с помощью mkvirtualenv:

mkvirtualenv your_project

  • Чтобы включить виртуальную среду your_project:

    workon your_project

  • Чтобы выйти из него:

    deactivate

Я заметил, что когда я устанавливал по отдельности virtualenv и virtualenvwrapper (с двумя повторами «sudo pip install»), у меня не получилось запустить source ~/.bashrc из-за сбоя импорта модуля virtualenvwrapper.hook_loader, поэтому, хотя вы действительно установили virtualenv и virtualenvwrapper, давайте попробуем еще раз с sudo pip install virtualenv virtualenvwrapper.

Надеюсь, что вы найдете ее полезной!

person Nguyen Xuan    schedule 17.03.2018
comment
Обратите внимание, что на шаге 2 мне нужно было добавить дополнительную строку: export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 - person Feiteira; 27.06.2019

export WORKON_HOME=~/Virtualenvs
export PROJECT_HOME=~/Devel
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
source /usr/local/bin/virtualenvwrapper.sh

Если у вас есть чистая установка virtualenv и virtualenvwrapper, то это должно работать в Mac OS. Это было для меня.

person akkhil    schedule 12.07.2019