Python 3.6.2环境下如何从poly.py导入函数至query.py?
跨目录模块导入方案(适配你的项目结构)
项目目录结构
my_project |_dataset |_execute |__poly.py |_search |__query.py |_determine |_optimize |_transmit
导入方法(Python3.6+无需__init__.py)
方法1:通过sys.path添加项目根目录
在query.py中添加以下代码,将项目根目录加入Python的模块搜索路径,之后即可直接按包结构导入:
import sys from pathlib import Path # 获取项目根目录路径并添加到sys.path sys.path.append(str(Path(__file__).parent.parent)) # 导入poly.py中的目标函数,替换成你的实际函数名 from execute.poly import target_function
方法2:使用相对导入
如果从项目根目录运行脚本(比如执行python search/query.py或python -m search.query),可以直接用相对导入语法:
# 从上级目录的execute包中导入poly模块的目标函数 from ..execute.poly import target_function
注意:不能直接在
search目录下运行python query.py,否则会将query.py视为顶级模块,相对导入会触发报错。
额外提示
- 优先保证运行脚本时的工作目录为项目根目录,能避免大部分路径相关问题
- 若使用相对导入,推荐用
python -m 模块路径的方式运行脚本,更符合Python包的规范
内容的提问来源于stack exchange,提问作者worky
相关产品推荐
相关产品推荐

