getpass 不适用于 spyder (Python)

Ahm*_*gih 6 python spyder getpass

我正在尝试使用 getpass 来隐藏输入,但它只是给了我这个错误:

“警告:QtConsole 不支持密码模式,您输入的文本将可见。”

我正在使用 Spyder。这是我的代码:

import getpass

pswd = getpass.getpass('Password:')

if pswd== 'whatever':
   print ('\nACCESS GRANTED') 
else:
   print('\nACCESS DENITED')
Run Code Online (Sandbox Code Playgroud)

HFB*_*ing 5

根据 Carlos Cordoba(Spyder 开发人员)对重复但官方未回答的问题的评论,您收到的警告是 Spyder/QtConsole 的限制,而不是getpass。他建议在 Spyder 中使用外部终端:

[没有解决方法]将在 Spyder 中运行。您可以转至并选择名为“使用外部终端”Run > Configuration per file > Console的选项。Execute in an external terminal


GBy*_*GBy 5

我继续根据 @Carlos Cordoba 评论编写了下面的小片段,因为 Spyder 基于 PyQt,所以您肯定拥有该包

def prompt_password(user):
    """
    Parameters
    ----------
    user : user name

    Returns
    -------
    text : user input password
    """
    from PyQt5.QtWidgets import  QInputDialog, QLineEdit, QApplication
    from PyQt5.QtCore import QCoreApplication

    # Let's avoid to crash Qt-based dev environment (Spyder...)
    app = QCoreApplication.instance()
    if app is None:
        app = QApplication([])

    text, ok = QInputDialog.getText(
        None,
        "Credential",
        "user {}:".format(user),
        QLineEdit.Password)
    if ok and text:
        return text
    raise ValueError("Must specify a valid password")
Run Code Online (Sandbox Code Playgroud)