Python 2.7 Python getpass.getpass()函数调用挂起

Python 2.7 Python getpass.getpass()函数调用挂起,python-2.7,freeze,getpasswd,Python 2.7,Freeze,Getpasswd,我试图得到一个提示,询问我的密码,但当我试图调用getpass.getpass()时,它就冻结了。我在Windows7上运行64位,在Canopy上使用Python2.7 import sys import getpass p = getpass.getpass() print p Python“有效地冻结,因为它无法从标准输入接收输入”。看 解决方法是使用不同的解释器。我切换到IDLE并修复了这个问题。Python“因为无法从标准输入接收输入而有效冻结”是正确的,但是,对于windows,

我试图得到一个提示,询问我的密码,但当我试图调用
getpass.getpass()
时,它就冻结了。我在Windows7上运行64位,在Canopy上使用Python2.7

import sys
import getpass

p = getpass.getpass()
print p
Python“有效地冻结,因为它无法从标准输入接收输入”。看

解决方法是使用不同的解释器。我切换到IDLE并修复了这个问题。

Python“因为无法从标准输入接收输入而有效冻结”是正确的,但是,对于windows,您可以在命令前面加上
winpty
。然后启动时可以正确输入密码,如:

winpty python fileToExecute.py

提供了一个类似于Unix pty主机的接口,可以从windows终端进行通信。

在getpass(mingw64)中遇到了同样的问题,并找到了简单的解决方案

os.system("stty -echo")
password = input('Enter Password:')
os.system("stty echo")
print("")
如果python无法正确读取标准输入,则
getpass()
将冻结。 这可能发生在某些Windows终端上,例如使用git bash。 您可以使用
sys
模块来避免挂起:

import getpass
import sys

# ...

if not sys.stdin.isatty():
    # notify user that they have a bad terminal
    # perhaps if os.name == 'nt': , prompt them to use winpty?
    return
else:
    password = getpass.getpass()
    # ...

我也在mac上用Jupyter实验室和Jupyter笔记本电脑安装了这个。对我来说,这个问题是由变量名引起的

命名变量
PG_REMOTEPASSWORD
导致挂起,但
PG_PASSWORD
PG_ABCPass
没有挂起。我不知道为什么这是一个问题,文档中没有关于变量调用限制的内容


我的设置是运行Python 3.7.7的Anaconda

我刚刚测试了这个-它不适用于所有情况。例如:在Windows中的PyCharm上,如果我调试成功,运行会导致终端挂起。使用此修复程序,它会拒绝这两个实例。它确实适用于我尝试过它的所有其他用例。所以我仍然在使用它@谢谢你的反馈。你有没有关于PyCharm的修复或替代代码的建议?知道为什么PyCharm会挂吗?我真的不知道-我不知道它为什么挂。我玩了一会儿,但老实说,这只发生在皮查姆。我不确定它的调试终端有什么不同,但在常规的Windows命令行上,我没有遇到任何问题,这也是使用我的代码的人将看到的,所以我留下了它。