2014-04-22 27 views
7

Generalnie używam IPython i dopiero niedawno zauważyłem, że ścieżka wyszukiwania dla importów jest błędna w zwykłej powłoce Pythona. Z tego co rozumiem, sys.path dziedziczy po PYTHONPATH (chociaż nie wiem, gdzie żyje PYTHONPATH), czy jest inaczej w IPythonie? Martwię się, że to efektowne instalacje. Na przykład próbowałem po prostu nie wypróbować, ponieważ nie udało się rozwiązać zależności scipy, którą już zainstalowałem. Więc dove trochę głębiej i znaleźć w ipythonIPython sys.path różny od python sys.path

import gensim 
gensim.__version__ 

powraca .9.1 natomiast w Pythonie

import gensim 
gensim.__version__ 

powraca .8.9

Oto co wersja ipython z sys.path wygląda następująco:

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

oraz standardowy python s CRIPT 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'] 
+0

Więcej informacji na temat sposobu działania sys.path, zobacz tę odpowiedź http://stackoverflow.com/a/38403654/ 850326 – djhaskin987

Odpowiedz

3

prawdopodobnie zbyt późno dla ciebie, ale odpowiedź tutaj może pomóc też: ipython reads wrong python version. Zasadniczo skrypt ipython może bezpośrednio odwoływać się do konkretnego binarnego pythonu, a nie do tego, który zostałby uzyskany, gdybyś bezpośrednio uruchomił pythona.

+0

Pierwszy komentarz pod pytaniem o link pomógł mi. – scottlittle

0

Miałem zainstalowaną wersję Pythona na moim macu. Z jakiegoś powodu, który nie mógł korzystać z bibliotek systemowych. Po brew uninstall python zadziałało to ponownie, ponieważ domyślny python został przełączony z powrotem do/usr/bin/python.

Grał także wokół z which python, which ipython i otwarcia/usr/bin/python/usr/local/bin/python,/usr/bin/ipython i/usr/local/bin/ipython i robi tam import może pomóc Ci dowiedzieć się, gdzie dokładnie dzieje się coś złego.

+0

Mac ma problemy podczas ustawiania 'sys.path' i' sys.executable' na Macu, ponieważ musi zgadnąć, gdzie znajduje się plik wykonywalny Pythona; DARWIN nie przekazuje sobie samej całej ścieżki Pythona. :( – djhaskin987

0

Być może zostało aktywowane środowisko wirtualne, które ignoruje ścieżkę systemową.

Może on być ustalony przez ten działa w terminalu (Po zamknięciu notebooka itp):

virtualenv --system-site-packages ~