3

Eclipse で jython プログラムを実行すると、出力の最初に次のエラーが表示されます。

" 環境の取得に失敗しました。environ は空になります: (0, 'コマンドの実行に失敗しました ([\'sh\', \'-c\', \'env\']): java.io.IOException: 実行できませんプログラム "sh": CreateProcess エラー = 2、指定されたファイルが見つかりません')

まず、私の環境は次のとおりです。

Windows 2008

JDK 1.6.0u10

ジソン2.2.1

掘り下げてみたところ、このメッセージは関数 javaos.getenv() で生成されることがわかりました。javaos.getenv() 関数を呼び出すたびに、次のエラーがスローされます。

C:\jython2.2.1>java -jar jython.jar

javaos のインポート

print javaos.getenv("user.name")

環境の取得に失敗しました。environ は空になります: (0, 'コマンドの実行に失敗しました ([\'sh\', \'-c\', \'env\']): java.io.IOException: プログラムを実行できません"sh": CreateProcess エラー = 2、指定されたファイルが見つかりません')

私は現在、Unix ではなく Windows マシンを使用しているため、これは奇妙です。

4

5 に答える 5

4

「レジストリ」ファイルの os 設定のコメントを外して変更してみてください

(それはあなたのjython.jarと同じディレクトリにあります/願っています)

# python.os determines operating-specific features, similar to and overriding the
# Java property "os.name".
# Some generic values are also supported: 'nt', 'ce' and 'posix'.
# Uncomment the following line for the most generic OS behavior available.
#python.os=None
python.os=nt
# try nt or dos
于 2008-10-29T09:05:12.377 に答える
2

面白い。さて、ここで関連するコードを見つけたようです: http://www.koders.com/python/fid4B7C33153C1427D2CE19CE361EA9519D1652F802.aspx?s=self

下の方を見ると、環境コマンド jython を設定すると、OS が posix であると認識されているようです。「Windows 2008」を使用していると言います。私はそれが何であるか分かりません。Windows Server 2008 のことですか? もしそうなら、それはまったく新しいものであり、同じモジュールの _getOsType 関数を見ると、そのモジュールには新しすぎるように見えます。jython または Eclipse の最新バージョンにアップグレードする必要がある場合があります。しかし、この OS をサポートするバージョンをまだリリースしていない可能性は十分にあります。その場合は、バグを報告する必要があるかもしれません。

于 2008-10-29T05:16:40.963 に答える
2

Windows 7 で実行しています。Jython を Websphere wsadmin ツールのスクリプトとして実行しています。この同じエラーが発生しました。これらの行を javaos.py からスクリプトにカット アンド ペーストしました: os または sys.registry.getProperty( "python.os" ) または \ java.lang.System.getProperty( "os.name" ) そして、"ウィンドウズ ビスタ」。そこで、上記で提案したのと同じ手術を行いました。つまり、Windows Vista を javaos.py に追加して、問題を解決しました。

于 2011-02-25T21:20:37.973 に答える
0

Eclipse /PyDevでWindowsVistaとJython2.5.1を使用して、同じエラーが発生しました。javaos.pyを編集して、getOsTypeのORステートメントに「WindowsVista」を含めます。エラーを修正しました。(SourceForgeのPyDev Trackerで修正プログラムのバグを報告しました。)

詳細:

Jythonのフルバージョンをインストールしましたが、それは役に立ちませんでした。また、Jythonツリーの「レジストリ」ファイルを編集してみました。それも役に立たなかった。

次に、次のファイルを確認しました。

C:\eclipse-platform-3.5-win32\eclipse\plugins\org.python.pydev.jython_1.4.8.2881\Lib

「javaos.py」を検索し、読み取るコードを少し追加します。

def _getOsType( os=None ):
   os = os or sys.registry.getProperty( "python.os" ) or \
               java.lang.System.getProperty( "os.name" )

_osTypeMap = (
    ( "nt", r"(nt)|(Windows NT)|(Windows NT 4.0)|(WindowsNT)|"
            r"(Windows 2000)|(Windows XP)|(Windows CE)|(Windows Vista)" ),
    ( "dos", r"(dos)|(Windows 95)|(Windows 98)|(Windows ME)" ),
    ( "mac", r"(mac)|(MacOS.*)|(Darwin)" ),
    ( "None", r"(None)" ),
    ( "posix", r"(.*)" ), # default - posix seems to vary mast widely
    )
for osType, pattern in _osTypeMap:
    if re.match( pattern, os ):
        break
return osType
于 2010-02-25T17:42:54.877 に答える
0

私はDaveBrandsブログからこのハックを使用しました:http://dbrand666.wordpress.com/2010/04/08/fix1/

try:
    import javaos
    if javaos._osType == 'posix' and \
            java.lang.System.getProperty('os.name').startswith('Windows'):
        sys.registry.setProperty('python.os', 'nt')
        reload(javaos)
except:
    pass
于 2011-12-02T16:22:11.603 に答える