禁用ipython自动加载虚拟环境

时间:2016-10-12 18:54:05

标签: python virtualenv conda

我有两个不同的python虚拟环境系统,一个是anaconda,另一个是virtualenv。 (我需要保持两者以适应不同的开发环境)。

我为每个虚拟环境安装了单独的ipython。问题是ipython似乎是虚拟环境感知,它会自动从$VIRTUAL_ENV加载库。

例如,这是我的两个不同的虚拟环境

    venvvirtualenv创建的
  1. virtualenv /home/<user>/venv。 我在$VIRTUAL_ENV中添加export VIRTUAL_ENV='/home/shao/venv'来设置.bashrc。此外,我在pip
  2. 的此环境中安装了一些必需的软件包
  3. p2,由anaconda创建:conda create -n p2 python=2
  4. 激活$PATHp2为:

    (p2) shao@T420s:~$ echo $PATH
    /home/shao/anaconda3/envs/p2/bin:/home/shao/anaconda3/bin:/home...
    

    我绝对相信ipython binaray在/home/shao/anaconda3/envs/p2/bin

    然而,p2的ipython sys.path是:

    (p2) shao@T420s:~$ ipython
    /home/shao/anaconda3/envs/p2/lib/python2.7/site-packages/IPython/core/interactiveshell.py:724: UserWarning: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
      warn("Attempting to work in a virtualenv. If you encounter problems, please "
    Python 2.7.12 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:42:40) 
    Type "copyright", "credits" or "license" for more information.
    
    ...
    
    In [1]: import sys
    In [2]: sys.path
    Out[2]: 
    ['/home/shao/venv/lib/python2.7/site-packages/pandas-0.18.1-py2.7-linux-x86_64.egg',
     '/home/shao/venv/lib/python2.7/site-packages/tika-1.13.1-py2.7.egg',
     '/home/shao/venv/lib/python2.7/site-packages/superlance-0.11-py2.7.egg',
     '/home/shao/venv/lib/python2.7/site-packages/pytz-2016.6.1-py2.7.egg',
     ...
     '/home/shao/venv,
     '/home/shao/anaconda3/envs/p2/bin',
     '/home/shao/anaconda3/envs/p2/lib/python27.zip',
     ...
     '/home/shao/.ipython']
    

    正如您所看到的,ipython解释器向我发出警告,而sys.path包含来自venv的库,这些库是来自p2的先前库。

    经过一些谷歌搜索后,我注意到最近的ipython版本是虚拟环境aware,因此它会自动从venv加载这些库。

    我注意到两件事:

    1. p2的python解释器不会受venv
    2. 的影响
    3. 如果我重置$VIRTUAL_ENVp2的ipython解释程序将不会受venv的影响。
    4. 现在的问题是,是否有任何优雅的方式(保持$VIRTUAL_ENV)来禁用ipython的初始化行为,以便不会加载$VIRTUAL_ENV个库?

      感谢。

0 个答案:

没有答案