IPython sys.path与python sys.path不同

我通常使用IPython,并且最近才注意到在常规python shell中导入的搜索路径是错误的。 据我所知,sys.path从PYTHONPATH继承(尽管我不知道PYTHONPATH的生命在哪里),这在IPython中有什么不同? 我担心这会影响安装。 比如我刚刚尝试过

pip install --upgrade gensim

因为它无法解决我已经安装的scipy依赖项,所以失败了。 所以我深入一点,在Ipython中找到了

import gensim
gensim.__version__

在python中返回.9.1

import gensim
gensim.__version__

返回.8.9

这是什么Ipython版本的sys.path看起来像:

['',
    '/Users/change/anaconda/bin',
    '/Users/change/anaconda/lib/python2.7/site-packages/pybing-0.12-py2.7.egg',
    '/Users/change/anaconda/lib/python2.7/site-packages/httplib2-0.8-py2.7.egg',
    '/Users/change/anaconda/python.app/Contents/lib/python27.zip',
    '/Users/change/anaconda/python.app/Contents/lib/python2.7',
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/plat-darwin',
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/plat-mac',
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/plat-mac/lib-scriptpackages',
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/lib-tk',
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/lib-old',
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/lib-dynload',
    '/Users/change/anaconda/lib/python2.7/site-packages',
    '/Users/change/anaconda/lib/python2.7/site-packages/PIL',
    '/Users/change/anaconda/lib/python2.7/site-packages/pygoogle',
    '/Users/change/anaconda/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info',
    '/Users/change/anaconda/lib/python2.7/site-packages/IPython/extensions']

和常规的python脚本sys.path:

['',
'/Users/change/anaconda/lib/python2.7/site-packages/pybing-0.12-py2.7.egg',
'/Users/change/anaconda/lib/python2.7/site-packages/httplib2-0.8-py2.7.egg',
'/Users/change/anaconda/lib/python27.zip',
'/Users/change/anaconda/lib/python2.7',
'/Users/change/anaconda/lib/python2.7/plat-darwin',
'/Users/change/anaconda/lib/python2.7/plat-mac',
'/Users/change/anaconda/lib/python2.7/plat-mac/lib-scriptpackages',
'/Users/change/anaconda/lib/python2.7/lib-tk',
'/Users/change/anaconda/lib/python2.7/lib-old',
'/Users/change/anaconda/lib/python2.7/lib-dynload',
'/Users/change/anaconda/lib/python2.7/site-packages',
'/Users/change/anaconda/lib/python2.7/site-packages/PIL',
'/Users/change/anaconda/lib/python2.7/site-packages/pygoogle',
'/Users/change/anaconda/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info']

现在对你来说可能已经太晚了,但是这里的答案也可以帮助你:ipython读取错误的python版本。 基本上,ipython脚本可以直接引用特定的python二进制文件,而不是直接运行python会得到的那个。


我在我的Mac上安装了一个brew版本的Python。 由于某些原因无法使用系统库。 在brew uninstall python后,它再次运行,因为默认的python被切换回/ usr / bin / python。

还在玩which pythonwhich ipython和打开/ usr / bin / python,/ usr / local / bin / python,/ usr / bin / ipython和/ usr / local / bin / ipython并在那里进行导入可能会有所帮助你会发现它到底发生了什么错误。


您可能会激活虚拟环境而忽略系统路径。

它可以通过在终端中运行来修复(关闭笔记本电脑后):

virtualenv --system-site-packages ~
链接地址: http://www.djcxy.com/p/20027.html

上一篇: IPython sys.path different from python sys.path

下一篇: LLVM loop optimization bug?