如何在main.py中导入script.py并传递变量以避免NameError?
问题解决方案
1. 规范文件夹结构(关键)
由于你是跨文件夹导入脚本,需要让Python将variablestorage和scriptfolder识别为合法包,只需在这两个文件夹下各创建一个空的__init__.py文件(文件名前后为双下划线)。最终结构如下:
项目根目录/ ├── main.py ├── variablestorage/ │ ├── __init__.py │ └── credentials.py └── scriptfolder/ ├── __init__.py └── script.py
2. 确认变量导入有效性
你的main.py中from variablestorage.credentials import *的写法本身正确,只要文件夹结构合规,就能直接获取variable1、variable2、variable3。若仍报错,检查:
credentials.py中的变量名拼写是否与调用时一致(Python大小写敏感)- 必须在项目根目录下运行
main.py(执行命令python main.py)
3. 函数调用无需修改
你当前调用scriptfolder.script.function1(variable1, variable2, variable3)的方式完全正确——script.py中的function1通过参数接收值,不需要在该文件内定义同名变量,传入的变量会直接覆盖函数内的参数引用。
验证代码示例
main.py
from variablestorage.credentials import * import scriptfolder.script scriptfolder.script.function1(variable1, variable2, variable3)
scriptfolder/script.py
def function1(variable1, variable2, variable3): # 测试打印验证变量传递 print(f"接收变量:{variable1}, {variable2}, {variable3}") # 编写你的业务逻辑
variablestorage/credentials.py
variable1 = 'value1' variable2 = 'value2' variable3 = 'value3'
排查要点
- 若仍报
NameError:检查运行main.py的工作目录是否为项目根目录,否则Python无法定位包路径。 - 若报
ModuleNotFoundError:确认子文件夹内存在__init__.py,且文件夹名与导入语句中的拼写完全一致。
内容的提问来源于stack exchange,提问作者JustYannicc
相关产品推荐
相关产品推荐

