【发布时间】:2011-09-18 02:52:38
【问题描述】:
我使用 Macports 在我的 Mac 上安装了各种版本的 python。当我通过$ port select python python27 选择python 2.7 时,virtualenvwrapper 可以完美运行。
但是如果我选择另一个版本的 python,即 2.6,virtualenvwrapper 会生成错误消息:ImportError: No module named virtualenvwrapper.hook_loader
我检查了我的 .profile 并将 VIRTUALENVWRAPPER_PYTHON 设置为 /opt/local/bin/python,所以在我看来,无论我选择了哪个 python,virtualenvwrapper 都应该工作。
知道什么会导致 virtualenvwrapper 在我切换 python 版本时生成 .hook_loader 错误吗?
【问题讨论】:
-
不经过
port select ...并坚持使用您的基本2.7,只运行mkvirtualenv --python /path/to/python2.6是否有效?它应该自动切换到正确的解释器(并设置环境)。在我的系统上(使用自制软件设置),mkvirtualenv -p python2.6工作正常。 -
我没有收到 hook_loader 错误,但它抱怨缺少 DEST_DIR $ mkvirtualenv --python /opt/local/bin/python2.7 使用解释器运行 virtualenv /opt/local/bin/ python2.7 你必须提供一个DEST_DIR
-
哎呀,对不起——遗漏了关键论点!那应该是
mkvirtualenv --python /path/to/python2.6 env_name。 mkvirtualenv 在您的$WORKON_HOME中创建一个名为“env_name”的文件夹,该文件夹作为DEST_DIR参数传递给 virtualenv。如果不指定名称,就很难确定在哪里进行设置,这是肯定的。 -
呃。我应该抓住它。是的,这行得通。猜猜答案是将端口选择留给 python27 并在我需要使用其他东西时使用 --python 标志运行 mkvirtualenv。