Я столкнулся с очень странной проблемой с virtualenv и virtualenvwrapper, которая поставила меня в тупик. Я разрабатываю приложения Django/Python на MacBook Air под управлением OS X 10.8.5. Вчера, совершенно неожиданно, когда я начал открывать новые окна консоли iTerm, я получил эти два сообщения:
-bash: GREP_OPTIONS: command not found
-bash: GREP_OPTIONS: command not found
Я сузил источник ошибки до этой строки в моем .bash_profile:
source /usr/local/bin/virtualenvwrapper.sh
Я не использую переменную среды GREP_OPTIONS ни в одном из моих «точечных» файлов. Когда я запускаю указанную выше исходную команду вручную, я получаю те же две ошибки.
После создания резервной копии virtualenvwrapper.sh я добавил «set -xv» вверху, повторно запустил его и обнаружил, что строка, генерирующая первое сообщение об ошибке, — это строка «if» в функции «function virtualenvwrapper_derive_workon_home»:
if echo "$workon_home_dir" | (unset GREP_OPTIONS; command \grep '^[^/~]' > /dev/null)
then
workon_home_dir="$HOME/$WORKON_HOME"
fi
Я увидел, что $workon_home_dir был правильно установлен в каталог моей виртуальной среды «/Users/[myname]/.virtualenvs».
Вот соответствующие строки в моем файле .bash_profile:
# .bash_profile
...
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
...
# I do set the path before running virtualenvwrapper.sh
export PATH=/usr/local/pgsql/bin:$PATH
...
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
...
Прочитав инструкции по установке virtualenvwrapper, я попытался добавить эти две строки над исходной строкой, но безрезультатно:
# Path to my global python executable
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
# Path to virtualenv executable
export VIRTUALENWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
Теперь, когда я ввожу команду «workon», я вижу список своих виртуальных сред, как и ожидалось. Однако, если я попытаюсь активировать один из них, например. мой "python" venv, делая "workon python", я вижу это!!
$ workon python
pydoc - the Python documentation tool
pydoc <name> ...
Show test documentation...
(... other lines of documentation ...)
Если я затем введу команду деактивации, я увижу те же строки pydoc, что и выше, плюс некоторые дополнительные сообщения, подобные этим:
-bash: _OLD_VIRTUAL_PATH: command not found
-bash: _OLD_VIRTUAL_PS1: command not found
-bash: VIRTUAL_ENV: command not found
-bash: -f: command not found
-bash: VIRTUALENVWRAPPER_LAST_VIRTUAL_ENV: command not found
Я попытался удалить и переустановить virtualenv и virtualenvwrapper с помощью pip, но это не решило проблему.
Что еще более странно, я заметил еще кое-что. Я помещаю все свои проекты Django в каталог Dropbox ~/www. День или два назад я заметил, что все мои проекты Django, которые были в этом каталоге и начинались с букв от «а» до «h», исчезли. Я не помню, чтобы вводил какие-либо команды, которые могли бы выборочно удалить эти каталоги проекта.
Это почти похоже на то, что, возможно, на моем диске появились поврежденные сектора, которые повредили один или несколько моих файлов virtualenvwrapper. Кто-нибудь знает, что может быть причиной этих проблем?
Спасибо.