1

Python スクリプトから Java アプリケーションを呼び出そうとしています。Java をインストールしたとき、このフォルダーjava.exeにプログラムが追加された場合c:\windows\system32、このフォルダーはPATH環境変数に含まれます。

ランニング

import subprocess
import os
subprocess.call("java") //or "c:/windows/system32/java.exe"

結果は

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\Program Files (x86)\Quantum GIS Lisboa\apps\Python27\Lib\subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "c:\Program Files (x86)\Quantum GIS Lisboa\apps\Python27\Lib\subprocess.py", line 679, in __init__
    errread, errwrite)
  File "c:\Program Files (x86)\Quantum GIS Lisboa\apps\Python27\Lib\subprocess.py", line 893, in _execute_child
    startupinfo)
WindowsError: [Error 2] Het systeem kan het opgegeven bestand niet vinden

もう少し調べcmdて、同じ方法でコンソール ( ) を実行してみました。dir c:\windows\system32そのコンソールで を実行すると、java.exeリストに表示されません! 実際、「通常の」コンソールから同じコマンドを実行する場合と比較して、多数のファイルがリストされていません。

まったく同じワークフローが別のコンピューターでも機能するため、何が原因なのかわかりません。system32 フォルダー内の実行可能ファイルではなく、Java インストールを直接呼び出すことで問題を回避できることはわかっていますが、この問題の根本を突き止めたいと考えています。

この問題は Quantum Gis プラグインで発生しています。Quantum Gis は付属の python インストールを使用するため、自分で python をインストールしませんでした。リストされている python バージョンは、「2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on Win32」です。Windows 7 Professional を実行しています。

4

1 に答える 1

4

いいえ、投げられるsubprocess.call("java")ことありません。NameError

代わりに引用符なしで実行しています:

>>> import subprocess
>>> subprocess.call(java)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'java' is not defined

NameError例外は Python で、グローバル名がコードjavaで定義されていないことを示しています。コマンドがマシン上で見つからなかったことを示しているわけではありません。java

于 2013-02-28T10:18:47.640 に答える