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命令行上,我没有遇到任何问题,这也是使用我的代码的人将看到的,所以我留下了它。