2016-12-30 9 views
0

は、私は完全に実行されているbashスクリプトを持っているのpython3に変換しますエボーンウィンドウが開いていますが、evince_vim_dbus.py行が機能していません。何らかのエラーが出ているわけではありませんが、意図した結果が表示されていないため、bashスクリプトを使用しています。はbashスクリプトが

check_call(私はしばらくそれを殺すために持って、ここでトレースバックだ)としよう:私は持っているつもりだ

File "/home/rudra/vims.py", line 28, in <module> 
    check_call(["python","/home/rudra/bin/evince_vim_dbus.py", "GVIM", "servername", oup_pdf, inp_tex]) 
    File "/usr/lib64/python3.5/subprocess.py", line 576, in check_call 
    retcode = call(*popenargs, **kwargs) 
    File "/usr/lib64/python3.5/subprocess.py", line 559, in call 
    return p.wait(timeout=timeout) 
    File "/usr/lib64/python3.5/subprocess.py", line 1658, in wait 
    (pid, sts) = self._try_wait(0) 
    File "/usr/lib64/python3.5/subprocess.py", line 1608, in _try_wait 
    (pid, sts) = os.waitpid(self.pid, wait_flags) 
KeyboardInterrupt 
+0

'call([" gvim "、"サーバー名 "、sys.argv [1]])':二重引用符で囲まれた一重引用符があります。 –

+0

コマンドのリターンコードを確認できますか?インポート時に別のPythonスクリプトを呼び出すのがなぜ簡単なのでしょうか? –

+0

私はLinuxを実行しています – BaRud

答えて

1

トレースバック(最新の呼び出しの最後)単純なservernameの代わりにサーバー名'servername'を渡すので、実際の問題はevince_vim_dbus.py行ではなく、gvim行であるため、evince_vim_dbus.pyを実行している行の名前と一致しないと考えられます。

私はgvimまたはそのサーバ機能に精通していませんが、evince_vim_dbus.pyプログラムが指定された名前でgvimに接続していると推測しています。この場合、正しい名前のサーバが動作していないため。

subprocess.call()が与えられたプログラムを実行して終了するのを待つのに対し、オリジナルのbashスクリプトではアンパサンドでevinceを実行すると、bashがそれを待たないようにしますおそらく問題はEv35を終了するまでevince_vim_dbus.pyが決して実行されないことです。

+0

私は 'gvim --servername" servername "$ 1"をbashに、 "severname"を引用の下に持っています。 – BaRud

+0

@BaRud、確かにそれらの引用符はbashによって消費され、gvimには渡されません。実際には、これらの引用符は無作為で完全に無関係でした。 – Dolda2000

+0

'call([" gvim "、" --servername "、" servername "、sys.argv [1]])'を試しましたが、結果はありません。 – BaRud