PYTHONPATH
を含むすべての必要な環境を設定するtcshシェルスクリプトがあります。このスクリプトは、最後に実行可能ファイルを実行します。私はまた、シェルスクリプトに入力として送られるpythonスクリプトを持っています。それはターミナルから実行されたときに、次は完全に正常に動作します:サブプロセスはすべての環境変数を保持していません
path to shell script
path to python script
私はサブプロセスから同じことをしたいときさて、問題が発生します。 Pythonスクリプトは、シェルスクリプトを介して既に設定されているはずのモジュールの多くを見つけることができないため、実行されません。そして明らかに、PYTHONPATH
は、サブプロセスが実行された親環境やシェルスクリプト自体に比べて多くの欠落したパスを持っています。サブプロセスは、シェルスクリプトが設定する環境を尊重しないようです。
私はすでにあらゆることを試しましたが、助けてくれませんでした!
cmd = [shell_script_path, py_script_path] process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=os.environ.copy())
envが指定されていない場合でも違いはありません!
これを修正する方法はありますか?
Popenを呼び出すPythonスクリプトを起動する前に 'export PYTHONPATH'を試しましたか?これにより、子プロセスはその変数を継承します。 –
Popenが実行している環境には、すでにすべてのパスが含まれています!あるいは、シェルからPYTHONPATHをエクスポートすることを意味しましたか?シェルスクリプトは環境自体を設定します。 – Yasin
私が何をしても、私はImportErrorsを取得し続けています。この 'import site'のようなエラーは失敗しました。トレースバック用に-vを使用する – Yasin