IPython sys.path отличается от python sys.path

Я обычно использую IPython и только недавно заметил, что путь поиска для импорта неверен в обычной оболочке Python. Насколько я понимаю, sys.path наследуется от PYTHONPATH (хотя я не знаю, где живет PYTHONPATH), отличается ли это в IPython? Я беспокоюсь, что это влияет на установку. Например, я только что попробовал

pip install --upgrade gensim

который не удался, потому что он не смог разрешить зависимость scipy, которую я уже установил. Так что я нырнул немного глубже и нашел в Ipython

import gensim
gensim.__version__

возвращает .9.1 в то время как в python

import gensim
gensim.__version__

возвращает .8.9

Вот как выглядит версия sys.path для Ipython:

['',
    '/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']

person paulsef11    schedule 22.04.2014    source источник
comment
Подробнее о том, как работает sys.path, см. в этом ответе stackoverflow.com/a/38403654/850326.   -  person djhaskin987    schedule 15.07.2016


Ответы (3)



У меня была установлена ​​версия Python для варки на моем Mac. По какой-то причине это не могло использовать системные библиотеки. После brew uninstall python он снова заработал, потому что питон по умолчанию был переключен обратно на /usr/bin/python.

Также игра с which python, which ipython и открытие /usr/bin/python, /usr/local/bin/python, /usr/bin/ipython и /usr/local/bin/ipython и выполнение импорта могут помочь вам найти там, где это точно идет не так.

person arno_v    schedule 25.02.2015
comment
У Mac возникают странные проблемы при установке sys.path и sys.executable на Mac, потому что ему приходится угадывать, где находится фактический исполняемый файл Python; DARWIN не передает себе весь путь python. :( - person djhaskin987; 15.07.2016

Возможно, у вас активирована виртуальная среда, которая игнорирует системный путь.

Это можно исправить, запустив это в терминале (после закрытия ноутбука и т. д.):

virtualenv --system-site-packages ~
person A.B    schedule 02.04.2016