我有两个不同的python虚拟环境系统,一个是anaconda
,另一个是virtualenv
。 (我需要保持两者以适应不同的开发环境)。
我为每个虚拟环境安装了单独的ipython。问题是ipython似乎是虚拟环境感知,它会自动从$VIRTUAL_ENV
加载库。
例如,这是我的两个不同的虚拟环境
venv
:virtualenv
创建的virtualenv /home/<user>/venv
。
我在$VIRTUAL_ENV
中添加export VIRTUAL_ENV='/home/shao/venv'
来设置.bashrc
。此外,我在pip
p2
,由anaconda
创建:conda create -n p2 python=2
。激活$PATH
后p2
为:
(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
加载这些库。
我注意到两件事:
p2
的python解释器不会受venv
$VIRTUAL_ENV
,p2
的ipython解释程序将不会受venv
的影响。现在的问题是,是否有任何优雅的方式(保持$VIRTUAL_ENV
)来禁用ipython的初始化行为,以便不会加载$VIRTUAL_ENV
个库?
感谢。