Python跨脚本共享变量使用config模块报AttributeError如何解决
问题原因
你遇到的AttributeError本质是:直接运行Account.py时,Loginregister.py中给config.x赋值的逻辑从未被执行,导入的config模块中自然不存在x属性。如果两个脚本是分开独立启动的,内存中的变量本身就无法跨进程共享,也是报错的常见原因。
可落地解决方案
方案1:同进程内共享变量(适合两个脚本在同一个进程中执行)
- 首先在项目根目录新建空的
config.py文件,优先导入本地自定义配置模块,避免和Python标准库模块冲突 - 调整执行逻辑,把登录逻辑作为入口,先完成变量赋值再调用Account中的逻辑:
修改后的Loginregister.py:
修改后的import config import Account # 原有获取用户名的逻辑 userName = "用户输入的用户名" # 替换为你实际获取userName的代码 config.x = userName # 调用Account的逻辑 Account.print_user()Account.py:import config def print_user(): print(config.x) - 直接运行
Loginregister.py即可正常输出用户名。
方案2:跨进程独立运行用文件持久化(适合两个脚本分开启动的场景)
如果你的两个脚本是分别独立运行的,内存变量无法跨进程共享,可以用临时文件存储用户名:
Loginregister.py写入逻辑:# 原有获取用户名的逻辑 userName = "用户输入的用户名" with open("temp_user.txt", "w", encoding="utf-8") as f: f.write(userName)Account.py读取逻辑:with open("temp_user.txt", "r", encoding="utf-8") as f: userName = f.read() print(userName)
方案3:用内置shelve模块共享(无需额外依赖,支持多变量共享)
Loginregister.py写入:import shelve userName = "用户输入的用户名" with shelve.open("share_db") as db: db["user_name"] = userNameAccount.py读取:import shelve with shelve.open("share_db") as db: print(db["user_name"])
内容的提问来源于stack exchange,提问作者RockZombie
相关产品推荐
相关产品推荐

