2014-01-13 4 views
2

Я столкнулся с очень странной проблемой с virtualenv и virtualenvwrapper, которая меня озадачила. Я разрабатываю приложения Django/Python на MacBook Air под управлением OS X 10.8.5. Вчера, на ровном месте, когда я начал открывать новые Iterm консольных окон, я хотел бы получить эти два сообщения:Virtualenvwrapper вел себя странно

-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» в «функции 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 using pip, но это не помогло решить проблему.

Чтобы сделать вещи еще более странными, я заметил что-то еще. Я поместил все мои проекты Django в каталог Dropbox ~/www. День или два назад я заметил, что все мои проекты Django, которые были в этом каталоге и которые начались с буквы «a» через «h», исчезли. Я не помню, чтобы вводить какие-либо commnands, которые могли бы выборочно удалять эти каталоги проектов.

Это почти похоже на то, что, возможно, на моем диске появились некоторые плохие секторы, которые испортили один или несколько моих файлов virtualenvwrapper. Кто-нибудь знает, что может вызвать эти проблемы?

Спасибо.

ответ

0

Я сделал две вещи, чтобы решить эту проблему. Во-первых, я обновил свою ОС до OS X 10.9 и сделал чистую установку. Это казалось проблемой, которая была в кишках моей машины, и я не знал, как ее исправить. Но даже после чистой переустановки я продолжал видеть документацию Pydoc при запуске команды workon. Я, наконец, сузил проблему до этого одного псевдонима, который у меня был в моем.Bashrc файл:

alias unset="DJANGO_SETTINGS_MODULE=" 

Я создал этот удобства псевдоним, потому что были времена, когда эта переменная будет содержать старое значение, и я хотел способ сбросить его легко. Я все еще не понимаю, почему это вызвало проблему. Если бы я назвал псевдоним чем-то другим, кроме «unset», проблема исчезла бы.

Смежные вопросы