You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python getpass置于独立模块调用时需第二次输入才生效问题求助

问题产生原因
  • Python导入模块的默认机制会执行模块文件内所有不在函数/类中的顶层代码。你编写的独立模块末尾直接调用了mypass(),没有添加入口判断,因此主脚本执行import myModule时会自动触发一次mypass()调用,这是第一次Password:提示的来源。
  • 主脚本内显式调用myModule.mypass()是第二次Password:提示的来源,因此需要输入两次才会拿到有效密码。
  • 直接运行独立模块时仅会执行一次mypass(),因此表现符合预期。
修复方案

修改独立模块的代码,仅在直接运行该模块时才调用mypass(),导入时不执行顶层调用:

#! /usr/bin/python3
from getpass import getpass
import sys
def mypass():
    try:
        password = getpass('Password: ')
    except Exception as e:
        print(e)
        sys.exit(1)
    while password == '':
        password = getpass('Enter password again: ')
    return password

# 替换原有的直接调用mypass()的代码,增加入口判断
if __name__ == '__main__':
    mypass()

修改完成后重新运行主脚本,仅会触发一次密码输入提示,问题即可解决。

内容的提问来源于stack exchange,提问作者mxFrank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:36:03