【问题标题】:IPython sys.path different from python sys.pathIPython sys.path 与 python sys.path 不同
【发布时间】:2014-06-06 05:08:07
【问题描述】:

我通常使用 IPython,最近才注意到在常规 python shell 中导入的搜索路径是错误的。据我了解, sys.path 继承自 PYTHONPATH (虽然我不知道 PYTHONPATH 住在哪里),这在 IPython 中有什么不同吗?我担心这会影响安装。例如我刚刚尝试过

pip install --upgrade gensim

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

import gensim
gensim.__version__

返回 .9.1 在python中

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']

【问题讨论】:

标签: python import path ipython sys


【解决方案1】:

现在对您来说可能为时已晚,但这里的答案也可能对您有所帮助:ipython reads wrong python version。基本上,ipython 脚本可以直接引用特定的 python 二进制文件,而不是直接运行 python 得到的那个。

【讨论】:

  • 您的链接问题下的第一条评论对我有帮助。
【解决方案2】:

我的 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 并做那里的导入可能会帮助您找出哪里出了问题。

【讨论】:

  • Mac 在 Mac 上设置 sys.pathsys.executable 时会遇到奇怪的问题,因为它必须猜测实际的 python 可执行文件在哪里; DARWIN 不会将 python 的整个路径传递给它自己。 :(
【解决方案3】:

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

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

virtualenv --system-site-packages ~

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多