私はちょうどPythonを使い始めています。Pythonモジュールはターミナルでインポートされますが、Unixシェルではインポートされません。
私はMacを使用していますが、Python.orgのPython.orgビルドと、Appleのオリジナルインストールがあります。
一部のサードパーティ製モジュールを読み込もうとしています。 IDLEまたはターミナルでスクリプトを実行すると、すべて正常に動作します。 CRONジョブとして実行しようとすると、サードパーティのモジュールが見つからないというエラーが表示されます。
私はPYTHONPATH/sys.pathだと考えています。私は私のパスを示すためのテストスクリプトを作成しました。だから、なぜそれがターミナルウィンドウで実行されているのか、シェルスクリプトとして直接実行されているのか、別のパスを取得するのですか?
私の二つの質問は以下のとおりです。
- 彼らはなぜ異なっていますか?
- サードパーティのモジュールを見つけるために直接シェルプロセスを取得するにはどうすればよいですか?
私はターミナルでそれを実行したときにここに私の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出力です私は貝にそれを実行したときに(このケースでは私は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']"
あなたは間違いなくvirtualenvを調べる必要があります。 Pythonのさまざまなバージョンとプロジェクト固有のパス変数を混乱させるのに役立ちます。 –