我最近从python 2.7改为python 3.4和anaconda。
我必须对我的代码进行一些更改才能在3.4中工作但是我遇到了一个问题,我不确定它是由新版本的Python还是Anaconda本身造成的。
在我过渡之前,我有命令
p=subprocess.Popen('Location of .exe file')
这很好用,因为它在不同的窗口/控制台中打开我的.exe文件,当python程序在后台运行时我必须提供一些输入。
现在,当我尝试运行相同的命令时,在单独的控制台上,我必须在我的python程序运行的同一个控制台中提供我的输入。
任何方式让它回到原来的样子?并且有人可以向我解释一下导致这种变化的原因吗?在这个论坛上已经有一些关于这个问题的建议,但到目前为止还没有。
感谢您的帮助
答案 0 :(得分:2)
简单地从Python的第2版传递到第3版不应该产生这样的差异。
我认为在您原来的Python2.7环境中,您使用Pythonw.exe
(注意结尾 w )来执行初始脚本,而在您正在使用的新Python3中{ {1}}。
两种版本都存在这两种口味。不同之处在于Python.exe
是控制台应用程序,而Python.exe
是GUI应用程序:
Pythonw.exe
使用其父控制台,并将其提供给其(控制台)子进程 - 如果从GUI程序(如资源管理器)启动,它将分配一个新的控制台Python.exe
忽略其父控制台,并为任何(控制台)子进程分配新的控制台。但是如果你试图在没有脚本的情况下执行它,它会立即结束,因为它没有标准输入。所以只需使用Pythonw.exe
启动脚本,每个子进程都有一个控制台