Python を使い始めたばかりで、ちょっとしたガイダンスが必要です。
私は Mac を使用していますが、元の Apple インストールと同様に、Python の python.org ビルドがインストールされています。
サードパーティのモジュールをロードしようとしています。IDLE またはターミナルでスクリプトを実行すると、すべて正常に動作します。CRON ジョブとして実行しようとすると、サードパーティ モジュールが見つからないというエラーが表示されます。
いくつか突っついた後、私はそれが PYTHONPATH / sys.path であると信じるようになりました。パスを表示するテスト スクリプトを作成しました。では、ターミナル ウィンドウを介して実行した場合と、シェル スクリプトとして直接実行した場合とでは、なぜ異なるパスが得られるのでしょうか?
私の2つの質問は次のとおりです。
- なぜ違うのですか?
- サードパーティ モジュールを見つけるためのダイレクト シェル プロセスを取得するにはどうすればよいですか?
ターミナルで実行したときの 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 の出力は次のとおりです (この場合、「do shell script」ステップで Applescript を使用しています。
"['/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']"