【问题标题】:Python virtualenvwrapper: 'workon' hangs indefinitelyPython virtualenvwrapper:'workon'无限期挂起
【发布时间】:2014-08-25 18:29:15
【问题描述】:

标题或多或少说明了一切。尝试workon $SOME_VIRTUALENV 会回显命令,然后在高 CPU (~70%) 处无限期挂起,直到它到达kill -9'd。在 OS X Mavericks 上。

我四处搜索,大多数类似的问题似乎来自使用 zsh 的人(我不是),并且在制表符完成 virtualenv 名称(我不是)上也遇到崩溃,所以我有点不知所措。我知道,没什么好说的,但我并不完全是 bash 专家,即使是关于如何获得一些真正的诊断信息的建议也将不胜感激。

$ echo $OSTYPE
darwin13.1.0

$ echo $SHELL
usr/local/bin/bash

$ echo $BASH_VERSION
4.0.0(1)-release

$ which python
/usr/local/bin/python

$ python --version
Python 2.7.8

$ pip show virtualenv
---
Name: virtualenv
Version: 1.11.6
Location: /usr/local/lib/python2.7/site-packages
Requires:

$ pip show virtualenvwrapper
---
Name: virtualenvwrapper
Version: 4.3.1
Location: /usr/local/lib/python2.7/site-packages
Requires: virtualenv, virtualenv-clone, stevedore

.bashrc(或多或少从某处复制粘贴):

# Locate virtualenvwrapper binary
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export VENVWRAP=/usr/local/bin/virtualenvwrapper.sh
fi

if [ ! -z $VENVWRAP ]; then
    # virtualenvwrapper -------------------------------------------
    # make sure env directory exists; else create it
    [ -d $HOME/sites/env ] || mkdir -p $HOME/sites/env
    export WORKON_HOME=$HOME/sites/env
    source $VENVWRAP

    # virtualenv --------------------------------------------------
    export VIRTUALENV_USE_DISTRIBUTE=true

    # pip ---------------------------------------------------------
    export PIP_VIRTUALENV_BASE=$WORKON_HOME
    export PIP_REQUIRE_VIRTUALENV=false
    export PIP_RESPECT_VIRTUALENV=true
    export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache
fi

【问题讨论】:

  • 如果你创建一个全新的 virtualenv 会发生什么:mkvirtualenv test -p /usr/local/bin/pythonworkon test 还挂起吗?
  • 稍后,您可以删除 test 虚拟环境:rmvirtualenv test
  • 另外,如果你运行set -x,那么 bash 会显示所有正在执行的命令。这可能有助于定位workon XYZ 挂起的位置。稍后,您可以使用set +x 关闭详细模式。
  • 一个新的 virtualenv 运行良好——显然应该尝试过,抱歉。删除并重新创建我正在处理的文件并将源文件夹复制回其中也有效。但是,一旦我重新安装了项目要求,它就会再次挂起。 set -x 的唯一输出是 + workon $blah + in_args=("$@") 有很多要求;我想我会通过自己,看看我是否能弄清楚发生了什么。
  • 考虑在bitbucket repo上打开一个问题?

标签: python bash virtualenv virtualenvwrapper


【解决方案1】:

对于后代,对于以后搜索此的任何可怜的灵魂:

我最终找到了这个问题的罪魁祸首,如果不是原因的话。 virtualenvwrapper 设置的自定义选项卡完成以某种方式导致了一个主要问题;如果我尝试使用制表符完成 workon 命令,输入的下一个命令将导致上述问题。即使我 Ctrl-C 退出制表符完成的命令并输入一个全新的命令,也会发生这种情况。

所以,我刚刚停止在workon 上使用制表符补全功能,并在virtualenvwrapper.sh 中删除了函数virtualenvwrapper_setup_tab_completion 的内容(替换为无操作true)以确保我不能这样做不小心。

我可能会更深入地了解 为什么 tab-completion 会导致问题,但现在不值得努力。我发现还有几个其他人对 virtualenvwrapper 的选项卡完成有问题的例子,但在这些情况下,终端在他们尝试使用它时立即崩溃,这不是这里发生的情况。

【讨论】:

    【解决方案2】:

    如果您不确定要在 bashrc 中添加什么,请不要将其放在那里。也许路径正在做奇怪的事情,这就是一切都卡住的原因。

    请尝试评论那里写的东西。

    按照此处的步骤操作:http://virtualenvwrapper.readthedocs.org/en/latest/install.html 或运行: 找到 virtualenvwrapper.sh

    你得到的路径是你需要的。编辑你的 .bashrc 并添加: 源 /path-of-what-you-got-earlier/virtualenvwrapper.sh

    更改后保存并关闭并执行以下操作: 源码.bashrc

    (也许你无论如何都需要配置WORKON_HOME。我不记得了)尝试看看是否有任何改变。

    如果没有,尝试创建新的virtualenv

    【讨论】:

      猜你喜欢
      • 2013-08-23
      • 1970-01-01
      • 2017-06-29
      • 2011-05-07
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      相关资源
      最近更新 更多