我找不到子进程常量但是已经安装了包。以下代码在第二行失败。你知道为什么吗?
import subprocess
si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
print si.dwFlags
通常这些常量应该在包中(参见http://docs.python.org/2/library/subprocess.html)。
我使用Python 2.7
答案 0 :(得分:3)
这些特定常量仅在Windows上定义。
STARTUPINFO
类和以下常量仅适用于Windows。
subprocess
模块测试sys.platform
;如果等于win32
,则定义STARTUPINFO
和pywintypes
类,并从_subprocess
模块导入常量(仅在Windows上编译)。
请注意,在Python 2.7.2之前,这些常量未添加到subprocess
;如果您运行的是Python 2.7.1或2.7.0,则必须直接从_subprocess
模块导入它们。 2.7.2和更新的包括公开这些常量的this bugfix,但documentation bugfix没有提到这些常量所暴露的版本。
以下是您可以使用的解决方法,为您添加以下常量:
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
答案 1 :(得分:0)
我找到了一种方法:
subprocess._subprocess.STARTF_USESHOWWINDOW