Ho appena iniziato con Python e ho bisogno di un po 'di guida.Il modulo Python importa nel terminale ma non tramite la shell Unix
Sto usando un Mac, ma ho installato python.org di python e l'installazione originale di Apple.
Sto provando a caricare alcuni moduli di terze parti. Quando eseguo lo script in IDLE o tramite terminale, tutto funziona correttamente. Quando provo a eseguirlo come lavoro CRON, viene visualizzato un errore che indica che non è possibile trovare il modulo di terze parti.
Dopo alcuni tentativi, sono stato indotto a credere che si trattasse di PYTHONPATH/sys.path. Ho creato uno script di test per mostrarmi il mio percorso. Quindi, perché ottengo percorsi diversi quando viene eseguito attraverso la finestra del terminale rispetto direttamente come uno script di shell?
Le mie due domande sono:
- Perché sono diversi?
- Come posso ottenere il processo di shell diretta per trovare i moduli di terze parti?
Ecco la mia uscita sys.path quando l'eseguo nel terminale:
['/Library/Scripts',
'/Library/Scripts/$',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/Library/Frameworks/Python.framework/Versions/7.3/lib/python27.zip',
'/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7',
'/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/plat-darwin',
'/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/plat-mac',
'/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/plat-mac/lib-scriptpackages',
'/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/lib-tk',
'/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/lib-old',
'/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/lib-dynload',
'/Library/Python/2.7/site-packages']
Ecco la mia uscita sys.path quando l'eseguo nel guscio (in questo caso sono in Applescript con un "do shell script" step.
"['/Library/Scripts',
'/System/Library/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/Library/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.framework/Versions/2.7/Extras/lib/python/PyObjC',
'/Library/Python/2.7/site-packages']"
Si dovrebbe assolutamente guardare in virtualenv; ti aiuterà a destreggiarsi tra diverse versioni di python e variabili di percorso specifiche del progetto. –