Python模块导入咨询:跨目录导入语句写法及相对导入疑问
Python模块导入问题解答
一、从project/python/chimera/runtime/driver.py导入到project/third_party/intel/backend/compiler.py的语句写法
两个文件不在同一包层级下,有两种可行方案:
方案1:动态添加路径到搜索列表
在compiler.py开头先把project/python目录加入Python的模块搜索路径,再执行导入:
import sys from pathlib import Path # 计算project/python的绝对路径,适配不同运行环境 python_root = Path(__file__).resolve().parent.parent.parent.parent.parent / "python" sys.path.append(str(python_root)) # 导入目标对象 from chimera.runtime.driver import driver
方案2:配置环境变量
运行代码前,把project/python目录添加到PYTHONPATH环境变量中(Linux/macOS执行export PYTHONPATH=/path/to/project/python:$PYTHONPATH,Windows执行set PYTHONPATH=C:\path\to\project\python;%PYTHONPATH%),之后直接写导入语句:
from chimera.runtime.driver import driver
二、..的用法及project/python/chimera/compiler/compiler.py的导入写法
..的含义
..是Python相对导入的语法,代表当前模块所在包的父包。
比如project/python/chimera/compiler/compiler.py属于chimera.compiler包,..就指向父包chimera,所以..runtime.driver对应chimera.runtime.driver模块,也就是project/python/chimera/runtime/driver.py文件。
该文件的导入写法说明
from ..runtime.driver import driver是标准的相对导入写法,依赖包的层级关系,无需额外配置路径。
你也可以用绝对导入替代,只要project/python在Python的搜索路径中,写法如下:
from chimera.runtime.driver import driver
内容的提问来源于stack exchange,提问作者user3322839
相关产品推荐
相关产品推荐

