Virtualenvwrapper表现得很奇怪

时间:2014-01-13 16:03:11

标签: python django virtualenv virtualenvwrapper

我遇到了一个非常奇怪的问题,virtualenv和virtualenvwrapper让我难过。我在运行OS X 10.8.5的MacBook Air上开发Django / Python应用程序。昨天,出乎意料的是,当我开始打开新的iTerm控制台窗口时,我会收到以下两条消息:

-bash: GREP_OPTIONS: command not found
-bash: GREP_OPTIONS: command not found

我将错误的来源缩小到我的.bash_profile中的这一行:

source /usr/local/bin/virtualenvwrapper.sh

我在任何“dot”文件中都没有使用任何GREP_OPTIONS环境变量。当我手动运行上面的源命令时,我得到了同样的两个错误。

在制作了virtualenvwrapper.sh的备份副本后,我在顶部添加了“set -xv”并重新运行它,发现生成第一条错误消息的行是“function virtualenvwrapper_derive_workon_home”中的“if”行功能:

 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 ...)

如果我然后输入deactivate命令,我会看到与上面相同的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

我尝试使用pip卸载并重新安装virtualenv和virtualenvwrapper,但这并没有解决问题。

为了让事情变得更奇怪,我注意到了别的东西。我将所有Django项目放入Dropbox目录〜/ www。一两天前,我注意到我在这个目录中以字母“a”到“h”开头的所有Django项目都消失了。我不记得输入任何可能有选择地删除这些项目目录的commnand。

这几乎感觉就像我的磁盘已经开发了一些损坏我的一个或多个virtualenvwrapper文件的坏扇区。有谁知道可能导致这些问题的原因是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

我做了两件事来解决这个问题。首先,我将操作系统升级到OS X 10.9并进行了全新安装。这似乎是我的机器内核的一个问题,我不知道如何解决它。但即使在进行干净的重新安装之后,我仍然在运行workon命令时看到Pydoc文档。我最终将问题缩小到我在.bashrc文件中的这个别名:

alias unset="DJANGO_SETTINGS_MODULE="

我创建了这个方便别名,因为有时这个环境变量会包含旧值,我想要一种方法来轻松重置它。我仍然不明白为什么会导致这个问题。如果我将别名命名为“未设置”以外的任何内容,则问题就会消失。