2017-11-22 3 views
0

yocto PyroでPythonスクリプトを使用してパッケージをビルドしています。Python Subprocess.PopenがクロスプラットフォームのYoctoで動作しない

Pythonスクリプトでは、私はsubprocess.Popenを使用しています。

Pythonスクリプトがクロスプラットフォーム用に実行されるとき、クロスプラットフォームのPythonサブプロセスパスを使用する必要がありますが、私の場合はネイティブパス "/usr/lib/python2.7/subprocess.py"を使用する必要があります。 PC。

そのため、私はin _execute_child raise child_exceptionに直面しています。 この問題を解決するお手伝いはできますか?

エラーが

File "/usr/lib/python2.7/subprocess.py", line 566, in check_output 
    process = Popen(stdout=PIPE, *popenargs, **kwargs) 
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ 
    errread, errwrite) 
File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 

PSを下回っている:私はすでに「シェル= True」にオプションを試してみましたが、それは私の問題を解決しませんでした。

答えて

0

目的のPythonセットアップを指す環境変数を設定し、それをサブプロセス呼び出しに渡す必要があります。あなたがビルド時にスクリプトを実行している場合、それはターゲットを実行することはできませんと、それはホストのpythonを実行します

1

この

export venv='/path/to/python' 

venv = os.environ["VENV_PYTHON"] 
p = subprocess.Popen([venv, command], env=os.environ.copy()) 

このような何かが必要なのpythonのセットアップを使用してPythonスクリプトを起動しますpythonバイナリは、そのターゲットバイナリであるという明白な理由からです。

例外として、popenが見つけられないバイナリを実行しようとしているだけです。ビルド$ PATHの内部はサニタイズされているので、bitbakeの外にあるものは含まれないことに注意してください。

関連する問題