【问题标题】:Why I am suddenly seeing `Usage: source deactivate` whenever I run virtualenvwrapper commands?为什么每当我运行 virtualenvwrapper 命令时,我都会突然看到“Usage: source deactivate”?
【发布时间】:2013-11-21 01:16:49
【问题描述】:

我以前在使用 virtualenvwrapper 时从未看到过这条消息,但现在我每次运行时都会突然看到这条消息,比如 mkvirtualenv <environment>workon <environment>

Usage: source deactivate

removes the 'bin' directory of the environment activated with 'source
activate' from PATH. 

我根本没有修改 virtualenvwrapper,快速的谷歌搜索只产生this GitHub issue——我确实安装了 IPython/Anaconda,但我不确定它是如何干扰 virtualenvwrapper 的。在任何情况下,我都尝试更新 (conda update conda; conda update ipython),以及将 virtualenvwrapper 本身更新到 v4.1.1,但我仍然看到这个错误。

我正在运行 OS X 10.8.4。

【问题讨论】:

  • 我猜它正在调用它认为是它自己的deactivate,但它最终调用了 conda 的 deactivate。
  • 安装 iPython/Anaconda 后,我的 virtualenvwrapper 也发生了同样的事情。根据 Anaconda 文档Linux/OSX Uninstallrm -fr ~/anaconda 修复了它。我在 OS X 10.9.2 上。
  • 我真的希望每个人都不要尝试包装 virtualenv。断的时候好痛。

标签: python virtualenvwrapper anaconda


【解决方案1】:

Anaconda 已经知道 activate 和不同环境的位置,因此不需要 virtualenvwrapper。

所有 virtualenvwrapper 在 Mac 上似乎都提供了激活源的工作快捷方式,您可以在 bash.rc 文件中使用别名并卸载 virtualenvwrapper。

只需在下面添加别名行,将 ~/anaconda/bin 添加到您的路径中,如下例所示。

# added by Anaconda3 4.3.1 installer
export PATH="$HOME/anaconda/bin:$PATH"

# Add workon alias here!
alias workon='source activate'

现在,当我运行“workon Django”时,它会运行我的 Anaconda Django 虚拟环境,而不会提醒我“源停用”是退出方式。

如果你没听明白,退出虚拟环境只需运行'source deactivate'

【讨论】:

    【解决方案2】:

    这发生在我从https://www.continuum.io/downloads 安装 Anaconda 后。如果您不需要该程序并且它将被卸载,请从您的 ~/.bash_profile 中删除以下内容:

    added by Anaconda2 4.2.0 installer
    export PATH="//anaconda/bin:$PATH"
    

    【讨论】:

      【解决方案3】:

      workon,在/usr/local/bin/virtualenvwrapper.sh 中定义,调用deactivate。 Anaconda 的 bin 中存在同名脚本,因此它会被 workon 调用。

      到目前为止,我发现的最佳解决方案是在 Anaconda 的 bin 中重命名 activate 和 deactivate。如果有更好的解决方案,请发表评论,我会更新这个答案。

      【讨论】:

      • 请解释一下。旅店”?这似乎是导致很多天问题的原因,因此我非常感谢您提供的所有帮助。
      • "in N" 是我真正感到困惑的地方。
      • 看来我的评论被破坏或切断了。一年前我确实发布了它,但我会尽力记住我要写的内容。
      • 我去重命名了 deactivate - 谢谢你的想法!它把我带到了另一个环境问题上;)这就是 Python 的开发!
      • 如果您能将我的答案标记为正确,那就太好了。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2021-07-02
      • 2020-04-17
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多