我遇到了一个非常奇怪的问题,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文件的坏扇区。有谁知道可能导致这些问题的原因是什么?
感谢。
答案 0 :(得分:0)
我做了两件事来解决这个问题。首先,我将操作系统升级到OS X 10.9并进行了全新安装。这似乎是我的机器内核的一个问题,我不知道如何解决它。但即使在进行干净的重新安装之后,我仍然在运行workon命令时看到Pydoc文档。我最终将问题缩小到我在.bashrc文件中的这个别名:
alias unset="DJANGO_SETTINGS_MODULE="
我创建了这个方便别名,因为有时这个环境变量会包含旧值,我想要一种方法来轻松重置它。我仍然不明白为什么会导致这个问题。如果我将别名命名为“未设置”以外的任何内容,则问题就会消失。