0

サブプロセス定数が見つかりませんが、パッケージはインストールされています。次のコードは 2 行目で失敗します。なぜなのかご存知ですか ?

import subprocess
si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
print si.dwFlags

通常、これらの定数はパッケージに含まれている必要があります ( http://docs.python.org/2/library/subprocess.htmlを参照)。

私はPython 2.7を使用しています

4

2 に答える 2

3

これらの特定の定数は、Windows でのみ定義されています。

関連セクションからの引用:

クラスと次のSTARTUPINFO定数は、Windows でのみ使用できます。

モジュールは次のsubprocessことをテストしsys.platformます。に等しい場合win32STARTUPINFOおよびpywintypesクラスが定義され、定数が_subprocessモジュールからインポートされます (これは Windows でのみコンパイルされます)。

これらの定数はsubprocessPython 2.7.2 まで追加されていないことに注意してください。_subprocessPython 2.7.1 または 2.7.0 を実行している場合は、モジュールから直接インポートする必要があります。2.7.2 以降には、これらの定数を公開するこのバグ修正が含まれていますが、ドキュメントのバグ修正には、これらの定数が公開されたバージョンについての言及がありませんでした。

これらの定数を追加する、使用できる回避策を次に示します。

if not hasattr(submodule, 'STD_INPUT_HANDLE'):
    import _submodule
    _missing = (
        'STD_INPUT_HANDLE', 'STD_OUTPUT_HANDLE', 'STD_ERROR_HANDLE', 'SW_HIDE',
        'STARTF_USESTDHANDLES', 'STARTF_USESHOWWINDOW')
    for _name in _missing:
        setattr(submodule, _name, getattr(_submodule, _name))
    del _submodule, _name, _missing
于 2013-08-05T10:03:07.043 に答える