创建__init__.py时无法引入tracks_functions.py函数的问题求助
Python项目打包中函数调用NameError问题的解决
问题原因
__init__.py未正确从tracks_functions.py导入目标函数,导致外部调用时无法找到函数名- 要么是导入路径错误,要么是未将函数显式暴露到包的命名空间中
解决步骤
先假设你的项目目录结构如下(结合描述还原):
your_project/ ├── py_scripts/ │ ├── __init__.py │ ├── tracks_functions.py │ └── (存放DataFrame的脚本,比如data_loader.py) └── (其他项目文件)
1. 修正__init__.py代码
如果你的DataFrame来自py_scripts下的某个脚本(比如data_loader.py里的df变量),同时要导入tracks_functions中的函数,直接修改__init__.py:
# 导入DataFrame(根据实际存放脚本调整路径) from .data_loader import df # 导入tracks_functions中的目标函数 from .tracks_functions import make_corr, print_corr_matrix
这样就把df、make_corr、print_corr_matrix直接暴露在py_scripts包的命名空间下,外部调用时可以直接用from py_scripts import df, make_corr, print_corr_matrix
2. 验证核心前提
- 确认
tracks_functions.py确实在py_scripts目录下,文件名拼写完全一致(Python对文件名大小写敏感) - 确保项目根目录在Python的
sys.path中,或者你是从项目根目录运行代码(避免路径找不到包)
3. 测试调用
在项目根目录下写个测试脚本验证:
from py_scripts import df, make_corr, print_corr_matrix # 测试函数功能 corr_result = make_corr(df) print_corr_matrix(corr_result)
如果不再触发NameError,说明问题已解决
常见误区提醒
- 不要只写
import .tracks_functions,这种写法会把函数放在tracks_functions子命名空间下,外部需要用py_scripts.tracks_functions.make_corr调用,无法直接使用make_corr - 检查
tracks_functions.py中是否确实定义了make_corr和print_corr_matrix函数,避免函数名拼写错误
内容的提问来源于stack exchange,提问作者spool
相关产品推荐
相关产品推荐

