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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:05:17