我剛剛開始使用Python,需要一點指導。Python模塊在終端中導入,但不通過Unix Shell
我正在使用Mac,但是我安裝了python的python.org版本以及原始的Apple安裝。
我想加載一些第三方模塊。當我在IDLE或通過終端運行腳本時,一切正常。當我嘗試將它作爲CRON作業運行時,出現錯誤,說它無法找到第三方模塊。
經過一番探索後,我一直相信它是PYTHONPATH/sys.path。我創建了一個測試腳本來顯示我的路徑。那麼,爲什麼當它通過終端窗口運行時直接作爲shell腳本獲得不同的路徑?
我的兩個問題是:
- 爲什麼他們有什麼不同?
- 如何獲得直接shell過程來查找第三方模塊?
這裏是我的sys.path輸出,當我在終端運行:
['/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']
這裏是我的sys.path輸出,當我在shell中運行它(在這種情況下,我在AppleScript的用「做shell腳本」 的步驟。
"['/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']"
你一定要看看virtualenv;它將幫助你處理不同版本的python和項目特定的路徑變量。 –