2016-04-19 21 views
5

Próbowałem dodać niestandardowy katalog do PYTHONPATH postępując zgodnie z poradami na ten temat Permanently add a directory to PYTHONPATH. Używam basha na Macu, jeśli to jest istotne. To, co zrobiłem:Dodawanie niestandardowego katalogu do PYTHONPATH

  1. open ~/.bash_profile
  2. export PYTHONPATH="${PYTHONPATH}:/Users/Zhengnan/Library/Python/2.7/lib/python/site-packages" i zapisać
  3. source ~/.bash_profile

Były dwa problemy:

  1. Kiedy wpadłem sys.path wewnątrz IDE Pythona, zamierzony rebel wciąż się nie pojawił.
  2. Kiedy uruchomiłem Python w Terminalu i uruchomiłem tam sys.path, pojawił się katalog, ale wszystkie pozostałe katalogi nie pasowały do ​​tego, co dostałem z poprzedniego kroku.

W szczególności to właśnie otrzymałem od sys.path wewnątrz IDE. Nie można znaleźć zamierzonego katalogu.

sys.path [ '' '/Applications/Spyder-Py2.app/Contents/Resources' „/Applications/Spyder-Py2.app/Contents/Resources/lib /python27.zip ', ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7 ', ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/plat -darwin ', ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/plat-mac ', ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/plat-mac/lib-scriptpackages ', '/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/lib-tk', '/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/lib-old' , '/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/lib-dynload', '/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/site- packages.zip ', ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/site-packages ', ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2. 7/ipython/rozszerzenia, '/Users/Zhengnan/.ipython']

d to właśnie dostałem od uruchomienia sys.path z Terminal. Zamierzony katalog jest trzecim elementem na liście.

sys.path [ '', '/ Users/Zhengnan', '/Users/Zhengnan/Library/Python/2.7/lib/python/site-packages', „/ System/Biblioteka/Frameworks/Python.framework/Versions/2.7/lib/python27.zip ',' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 ','/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin ',' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac ','/System/Biblioteka/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages ',' /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python ', "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib- tk ',' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old ',' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload ','/System/Library/Frameworks/Python. ramowe/Versions/2.7/Dodatki/lib/python/PyObjC ']

należy wspomnieć, że powodem, dla którego chcesz dodać ten niestandardowy dir do PYTHONPATH jest to, że za każdym razem, kiedy pip install pakiet, to zostanie zainstalowany w /Users/Zhengnan/Library/Python/2.7/lib/python/site-packages i nie chcę sys.path.append za każdym razem, gdy uruchamiam skrypt. Proszę doradź. Dzięki.

+0

Zobacz http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x – cdarke

Odpowiedz

2

Tu się dużo dzieje.

Zasadniczo Python, którego używasz w swoim IDE, nie jest Pythonem, którego używasz w terminalu. To dlatego pip install nie umieszcza rzeczy we właściwym miejscu.

Najprostszym rozwiązaniem jest zmodyfikowanie zmiennej środowiskowej $PATH, dzięki czemu po wpisaniu w terminalu nazwy python otrzymasz tę samą wersję, której używa IDE. Domyślam się, że IDE python jest coś takiego jak /Applications/Spyder-Py2.app/Contents/Resources/bin/python, w którym to przypadku byś pozbyć się PYTHONPATH Ustawianie .bash_profile i dodać:

export PATH="/Applications/Spyder-Py2.app/Contents/Resources/bin:$PATH" 

Zakładając, że pip jest dostępny w tym samym miejscu, powinien teraz być w stanie do pip install rzeczy bez potrzeby błądzenia się z PYTHONPATH.

Innym problemem jest to, że zmienne środowiskowe ustawione w powłoce, np. W twoim .bash_profile, nie mają wpływu na środowisko widoczne dla aplikacji. Możliwe jest ustawienie zmiennych środowiskowych, które będą widoczne dla aplikacji OS X (np. Zobacz this question), ale jest to trudne i nie radzę.

Alternatywne rozwiązanie, jeśli jest dostępne, to po prostu przekazanie IDE, którego numeru powinno używać python, i wskazanie go w dowolnym miejscu widocznym na terminalu.