2016-04-19 22 views
5

Ho cercato di aggiungere una directory personalizzata a PYTHONPATH seguendo i consigli su questo post Permanently add a directory to PYTHONPATH. Sto usando bash su un Mac, se questo è rilevante. Questo è quello che ho fatto:Aggiunta di dir personalizzata a PYTHONPATH

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

C'erano due problemi:

  1. Quando ho eseguito sys.path all'interno di un IDE Python, il la dir intesa non si è ancora mostrata.
  2. Quando ho acceso Python in Terminal e ho eseguito sys.path lì, la directory è stata mostrata, ma tutte le altre directory non corrispondevano a ciò che ho ottenuto dal passaggio precedente.

In particolare, questo è quello che ho ottenuto dall'esecuzione di sys.path all'interno dell'IDE. La dir prevista non è stata trovata.

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/extensions', '/Users/Zhengnan/.ipython']

An d questo è quello che ho ottenuto eseguendo sys.path dal terminale. La dir prevista è il terzo elemento nell'elenco.

sys.path [ '', '/ Users/Zhengnan', '/Users/Zhengnan/Library/Python/2.7/lib/python/site-packages', '/ System/Libreria/Framework/Python.framework/Versioni/2.7/lib/python27.zip ',' /System/Library/Framework/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/Libreria/Framework/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. quadro/Versions/2.7/Extra/lib/python/PyObjC ']

Vorrei ricordare che il motivo che voglio aggiungere questo dir personalizzato per PYTHONPATH è che ogni volta che pip install un pacchetto, viene installato in /Users/Zhengnan/Library/Python/2.7/lib/python/site-packages e non voglio sys.path.append ogni volta che eseguo uno script. Si prega di avvisare. Grazie.

+0

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

risposta

2

C'è molto da fare qui.

Fondamentalmente, il Python che si sta utilizzando nell'IDE non è il Python che si sta utilizzando nel terminale. Questo è il motivo per cui pip install non mette le cose nel posto giusto.

La soluzione più semplice è modificare la variabile di ambiente $PATH in modo che quando si digita python nel terminale, si ottenga la stessa versione utilizzata dall'IDE. La mia ipotesi è che di python il vostro IDE è qualcosa di simile /Applications/Spyder-Py2.app/Contents/Resources/bin/python, nel qual caso si sbarazzarsi della vostra PYTHONPATH impostare il .bash_profile e aggiungere:

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

Supponendo che pip è disponibile nello stesso luogo, si dovrebbe ora essere in grado a pip install cose senza dover andare in giro con PYTHONPATH.

L'altro problema qui è che le variabili di ambiente impostate nella shell, ad es. Nello .bash_profile, non hanno alcun impatto sull'ambiente visibile alle applicazioni. È possibile impostare le variabili di ambiente che saranno visibili alle applicazioni OS X (ad esempio, vedere this question), ma è complicato e non lo consiglierei.

Una soluzione alternativa, se disponibile, è solo per comunicare al proprio IDE quale python deve essere utilizzata e puntarla in corrispondenza di quella visibile dal terminale.

Problemi correlati