在 cmd 窗口中运行时,spawn 命令工作正常,但如果在虚拟环境中,它会永远挂起。
这有效
C:\Users\csullivan\Documents\Projects\netlog>python
Python 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from wexpect import spawn
>>> spawn("cmd.exe")
<wexpect.host.SpawnPipe object at 0x0000019F7040DBB0>
>>>
但这不会从 spawn 返回。
(env) C:\Users\csullivan\Documents\Projects\netlog>python
Python 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from wexpect import spawn
>>> spawn("cmd.exe")
如果软件版本相同,我预计或至少希望在 Python 虚拟环境中具有相同的行为,它们确实如此。
环境
- Microsoft Windows 10 专业版 10.0.19043 内部版本 19043
- 戴尔 Latitude 7490
- 蟒蛇 3.9.5
- 我们期待 4.0.0
virtualenv
从一个可能相关的地方运行有什么特别之处吗?unittest
我开始这个练习是为了使用 using测试一个交互式 C 程序subprocess
,它一直有效,直到我需要与它进行实际交互。然后我尝试了pexpect
。至少没有挂起,Popen_spawn
但后来尽管使用timeout=1
了读取。
如果这不起作用,是否可能有一个具有类似功能或足以为命令窗口或直接与应用程序提供读/写功能的 C API?