10

我系统中的默认 python 版本是 2.6.6。我安装了 virtualenv,每当我打开终端时,我希望默认的 virtualenv 为 2.7。

因此,我在 ~/.bashrc 文件中添加了以下命令:

source $HOME/virtualenvs/py2.7/bin/activate

现在,每当我通过单击 Gnome 环境中的图标启动终端时(即,我已经登录到机器并在 Gnome 中打开一个新的终端窗口(xterm)),shell 符号如下所示:

    (py2.7)(py2.7)

看起来我不知何故在另一个 virtualenv 中有一个 virtualenv。更糟糕的是,我只能停用一个 virtualenv 而不能停用另一个,如下所示:

    (py2.7)(py2.7)deactivate 
    (py2.7)python
    Python 2.7.5 (default, Jun 28 2013, 14:53:08) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    (py2.7)deactivate
    bash: deactivate: command not found
    (py2.7)python
    Python 2.7.5 (default, Jun 28 2013, 14:53:08) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>

如您所见,虽然我系统中的默认python是2.6,但我卡在了virtualenv(2.7)

如果我通过 Ctrl + Alt + F2 切换到文本虚拟控制台并登录,它看起来很正常。

    (py2.7)[username@host ~]$

我可以停用并返回系统默认的python 2.6。

    (py2.7)[username@host ~]$ python
    Python 2.7.5 (default, Jun 28 2013, 14:53:08) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    (py2.7)[username@host ~]$ deactivate
    [username@host ~]$ python
    Python 2.6.6 (r266:84292, Oct 12 2012, 14:23:48) 
    [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 

有什么问题?每当我在 Gnome 中打开终端时,是否可以将默认 virtualenv 设置为 2.7?

我的 Linux 发行版是 RedHat 6。

4

4 回答 4

8

这个怎么样?测试您是否已经在 virtualenv 中:)

test -z "$VIRTUAL_ENV" && source $HOME/virtualenvs/py2.7/bin/activate
于 2013-06-29T00:15:07.153 回答
3

沃尔夫的回答对我不起作用。相反,我在 .bashrc 中使用了以下测试:

if (tty -s); then
    source /pathto/virtualenvs/py2.7/bin/activate
fi

如果标准输入是终端,则 tty 以 0 退出,如果不是,则以 1 退出。如果您不对此进行测试,它会以某种方式执行两次:一次是在登录时,另外一次是在您打开终端时。

编辑:如果你现在做“屏幕”,你会再次得到 (py2.7)(py2.7)user@computer ]$

于 2015-01-27T13:10:12.203 回答
3

我建议使用非常方便的autoenv 。

于 2016-04-25T08:39:41.663 回答
2

我使用virtualenvwrapper,然后类似于Godrebh 的方法.bashrc,我只是在我的(或其他登录脚本)中调用我首选的默认 virtualenv 。

if (tty -s); then
  workon py3_default
fi
于 2017-03-14T19:32:02.993 回答