【问题标题】:How to use the Python getpass.getpass in PyCharm如何在 PyCharm 中使用 Python getpass.getpass
【发布时间】:2015-04-19 05:01:35
【问题描述】:

我发现 getpass 在 PyCharm 中不起作用。它只是挂起。

事实上似乎 msvcrt.getch 和 raw_input 也不起作用,所以问题可能不在于 getpass。取而代之的是 PyCharm 的 stdio 处理中的“i”位。

问题是,我不能将我的个人密码放入代码中,因为它最终会出现在其他人可以看到的 SVN 中。所以我每次都使用getpass来获取我的密码。

在搜索时,我只能找到“Pycharm 进行圆顶黑客攻击以使 Django 使用 getpass”,但没有提示该黑客是什么......

我查看了 getpass,它在 Windows 上使用 msvcrt(所以这个问题可能只在 Windows 上)

我的问题是:这个问题有解决方法吗?

【问题讨论】:

    标签: python pycharm


    【解决方案1】:

    对于 PyCharm 2018.3

    转到“编辑配置”,然后选择“在输出控制台中模拟终端”。

    【讨论】:

    • Run >> Edit Configurations... ,但这仅适用于 Run,不适用于 Debug。
    • @James 它也适用于 Windows 10 的调试模式。
    • 这可行,但如果您一个接一个地请求两个密码,它会跳过第二个。
    • 无论是否选中此选项,都为我进行了调试。唯一的区别是没有检查它,它实际上显示了我输入的密码。顺便说一句,我正在使用带有 Python 插件的 Intellij。
    • 非常感谢它的工作,终于我可以运行和调试 getpass fn
    【解决方案2】:

    我在 Windows 上遇到过这个正在运行的 Pycharm CE 4.5。我使用的解决方法是在调试模式下运行您的程序,然后您会看到一个控制台选项卡,您可以在使用 getpass 时在其中输入密码。

    【讨论】:

      【解决方案3】:

      第一次使用,我的代码在 pycharm 中,然后点击“运行”,然后点击“编辑配置”,然后选择“在输出控制台中模拟终端”

      from selenium import webdriver
      from getpass import getpass
      email=input("Enter the email:")
      password= getpass("Enter the password:")
      driver=webdriver.Chrome()
      url='https://www.facebook.com/'
      driver.get(url)
      user_id=driver.find_element_by_id("email")
      user_id.send_keys(email)
      user_password=driver.find_element_by_id("pass")
      user_password.send_keys(password)
      login_button = 
      driver.find_element_by_id("u_0_b").click()
      time.sleep(30)
      

      【讨论】:

      • 第一次使用时,我的代码在 pycharm 中然后点击“运行”然后点击“编辑配置”然后选择“在输出控制台中模拟终端”
      【解决方案4】:

      对此的常见解决方案是将凭据存储在您标记为被 VCS 忽略的文件中。然后就:

      with open('credentials.txt') as f:
          user, pw = f.read().split('\n')  # or similar
      

      或者,在环境变量中指定它们。这两种方法都可以解决 PyCharm 对stdin 的处理。

      【讨论】:

      • 将您的密码存储在文件中?
      【解决方案5】:

      不幸的是,getpass() 往往会失败(我用 IDLE 和 PyScripter 对其进行了测试,但在 Python 3.4 上没有任何成功)。我建议使用 easygui 中的密码框——只要你不使用 ver,它就可以很好地工作。 0.98(那里有些乱),使用版本是安全的。 0.96.

      下载easygui版本。 0.96,解压到一个临时文件夹,然后从那个文件夹安装它:

      python setup.py install
      

      并在您的程序中使用密码框:

      from easygui import passwordbox
      password = passwordbox("PASSWORD:")
      

      【讨论】:

        【解决方案6】:

        在我的情况下,即使将配置设置为“在输出控制台中模拟终端”getpass.getpass() 也不起作用。为了解决这个问题,“我将配置设置为 Run With Python ConsoleEditing the configuration

        但是现在有一个不同的问题:控制台在 python 控制台中回显密码。如果您不希望这种情况发生,我建议您使用 cmd 或 Linux 终端运行程序。 Linux 终端中的输出如下所示: Output in Terminal

        【讨论】:

          猜你喜欢
          • 2015-07-25
          • 2016-02-15
          • 1970-01-01
          • 1970-01-01
          • 2019-09-14
          • 2016-03-03
          • 1970-01-01
          • 2018-10-31
          • 1970-01-01
          相关资源
          最近更新 更多