Popen
は、あなたのパスにpython3
が見つかりません。 python3
が実行されたため
主エラーがhello.py
が見つかりませんでした、あなたはstderr
に代わり、このエラーを持っているというものであった場合(つまりではありません読み)
python: can't open file 'hello.py': [Errno 2] No such file or directory
あなたはsubprocess
で例外を得ないだろうが、実行するPythonファイルを見つけることができませんでした。
最初に、pythonファイルを実行する場合は、別のプロセスで実行しない方がよいでしょう。
しかし、それでもやりたいのなら、このような引数リストを使って実行する方がよいでしょう。スペースは正しく処理され、すべてのファイルにフルパスを提供します。
import subprocess
proc = subprocess.Popen([r'c:\some_dir\python3',r'd:\full_path_to\hello.py'], stdout=subprocess.PIPE)
tmp = proc.stdout.read()
print(tmp)
はさらに移動するには:
- は
python3
ために、それは完全なパスを指定しないようにシステムパスにそれを置くために良いでしょう。また import subprocess,os
basedir = os.path.dirname(__file__)
proc = subprocess.Popen(['python3',os.path.join(basedir,'hello.py')], stdout=subprocess.PIPE)
tmp = proc.stdout.read()
print(tmp)
:それが配置されている場合は、スクリプト用として
- 、たとえば、同じディレクトリおよび現在のスクリプトでは、パスに
改善スニペットをハードコーディングすることを避けることができPopen
を最初に渡された引数の種類execvp
を実行します。最初の引数が例えば.bat
というファイルの場合は、接頭辞またはshell=True
を追加して、Popen
に直接実行する代わりにシェルでプロセスを作成するように指示する必要があります。
[OK]を、その私のために動作しますが、 なぜ私は PROCを実行したとき= subprocess.Popen([ 'casperjs'、os.path.join(basedirに、 'casper_script.js')]、STDOUT = subprocess.PIPE)その戻りエラー – ivan
capserjsがインストールされています – ivan
私は "shell = True" – ivan