>>> import getpass>>> help(getpass.getpass)Help on function win_getpass in module getpass:win_getpass(prompt='Password: ', stream=None, *, echo_char=None) Prompt for password with echo off, using Windows getwch().
这个getpass的功能是获取用户输入的密码。可以无显输入,就像通过putty远程登陆服务器时的效果。一开开始在Windows的cmd下使用的时候,还在纳闷为什么我右键点击了,怎么没有显示key值,原来是无显效果。可能一开始学习langchain都遇到的一个感觉疑惑的事情。Putty、Xshell远程登录Linux输入密码时,屏幕不出现星号、不出现光标字符,敲多少键盘都空白,就是标准无回显机制;getpass.getpass()在 Windows CMD/PowerShell 里实现的就是完全同款效果:
- 敲键盘不会打印任何字符(无字母、无 *、无空格)
- 后台会完整收集你输入的字符串,回车后返回密码 / 密钥
右键粘贴API Key,屏幕上一片空白,第一反应会以为没粘贴成功、工具卡住了,其实只是程序刻意隐藏输出,粘贴内容已经读到内存里了。
https://docs.langchain.com/oss/python/integrations/chat/qwen
win_getpass 底层依赖 Windows C 标准库函数 _getwch(),这是实现不回显的核心,和普通 input()、_getwche() 有本质区别:
_getwch():读取键盘按键,不自动输出字符到控制台(无回显)_getwche() / 普通控制台输入:读键 + 立刻把字符打印到屏幕(回显)
如果传入 echo_char="*",每读到一个正常字符,程序手动往控制台输出一个*;不传则完全不输出任何字符,就是你遇到的纯空白效果。