2017-09-20 12 views
3

私はRaspbianのRaspberry Pi 3で別のPythonスクリプトからPythonスクリプトを実行しようとしています。私はこれを数時間行う方法を見つけようとしてきており、効果があるものは見つけられませんでした。いくつかの方法を試しましたが、ファイルを実行する権限がないか、ファイルを見つけることができません。私は何が間違っているのか分からない。私は新しいコンソール(新しいプロセス)のメインスクリプトを通して他のスクリプトの複数のインスタンスを実行し、それらを実行し続ける必要があります(私はそれらがメインスクリプトに何かを返すとは思わない)。誰でも助けてくれますか? Windowsでは、Linux上で(Windowsではos.startfileを使って)実行しようとするまで、プログラムが正常に動作していたので、本当に簡単でした。 test.pyでPython RPi - 別のスクリプトからスクリプトを実行しているときにファイルが見つかりません

:コンソールで

import os 
import subprocess 
print("main") 
os.system("python test.py") 
input() 

: メイン のpython:ファイルを開くことができません「test.py main.pyで

print("test1") 
input() 

':[Errno 2]そのようなファイルまたはディレクトリなし

In main.py:コンソールで

import os 
import subprocess 
print("main") 
subprocess.Popen("python test.py",shell=True) 
input() 

: メイン のpython:ファイルを開くことができません 'test.py':[errnoを2]、そのようなファイルやディレクトリはありません

main.pyで:コンソールで

import os 
import subprocess 
print("main") 
subprocess.call("python test.py",shell=True) 
input() 

: 主なPython:ファイルを開くことができません 'test.py':[エラー番号2]このようなファイルまたはディレクトリ

私はもっと多くの方法を試しましたが、私はそれらを覚えていません。多分私は何か間違っているのですか?

編集:os.chdirで問題なくスクリプトを実行できるようになりました(J Hのおかげで)。私の問題は、main.pyと同じコンソールウィンドウにテストを表示し、test.pyの別のプロセスを作成する必要があることです。どんな解決策ですか?

EDIT 2:最後に、main.pyからtest.pyの新しいプロセスを開始することができました!私はos.system( 'xdg-open "test.py"')を使って、デフォルトのアプリケーションでtest.pyを開きました。とにかくJ Hのおかげで、そうでなければファイルが見つからないと言うことになります。

決勝main.py:事前に

import os 
print("main") 
os.chdir('/home/pi/Desktop/') 
os.system('xdg-open test.py') 
input() 

ありがとう!

+0

これらのファイルは同じディレクトリにありますか?あなたのコードは私のために働いています(Linuxの場合) –

+0

はい、同じディレクトリにあります(この場合、サイトにはこの情報がないので、おそらくos.chdir()となります)。多分それはRaspbianと関係があります。 – DADi590

答えて

1

os.getcwd()を印刷すると、これをデバッグするのに役立ちます。

test.pyを実行する前に、完全修飾パス名/some/where/test.pyを指定するか、os.chdir('/some/where')を使用してください。

+0

私はそれを試して、それは働いた。しかし、問題は、メインのスクリプトと同じコンソールウィンドウにテストを表示し、別のコンソールウィンドウを開くために必要なことです。 – DADi590

+0

Pythonインタプリタを直接forkする必要はありません。あなたは 'xterm -e python test.py'を呼び出すBourneスクリプトをフォークすることができます。あるいは、' os.system() 'が直接行うことができます。マニュアルページはhttps://www.x.org/archive/X11R6.8.1/doc/xterm.1.html –

+0

os.system()で試してみましたが、Windowsのように新しいウィンドウを開けませんでした。ところで、私はPythonの初心者です)。 – DADi590

関連する問題