Python 3.6.2绝对导入失效,StackOverflow未找到解决方案
解决Python绝对导入失效的问题
我来帮你搞定这个绝对导入失效的问题~ 当你直接运行index/main.py时,Python默认会把index目录加入到sys.path(Python的模块搜索路径)里,而不是backend所在的父目录,所以它找不到backend这个顶级包,自然绝对导入就失效了。下面给你几个可行的解决方案:
方案1:设置PYTHONPATH环境变量
把backend所在的父目录添加到PYTHONPATH中,这样Python就能找到backend包了:
- Linux/macOS:在终端里运行
export PYTHONPATH=/path/to/backend-parent-directory python backend/index/main.py - Windows:在命令提示符里运行
set PYTHONPATH=C:\path\to\backend-parent-directory python backend\index\main.py
(替换/path/to/backend-parent-directory为实际存放backend文件夹的上级目录路径)
方案2:在脚本开头手动添加路径
在index/main.py的最顶部,先把backend的父目录加入到sys.path中,再进行导入:
import sys from pathlib import Path # 获取当前脚本所在目录的父目录(也就是backend的同级目录) parent_dir = Path(__file__).resolve().parent.parent sys.path.append(str(parent_dir)) # 现在可以正常使用绝对导入了 from backend.lib.models.model import 你的类或函数
方案3:用-m参数以模块方式运行
从backend的父目录下,用模块运行的方式启动脚本,这样Python会自动识别包结构:
python -m backend.index.main
另外要确认一下,你所有的__init__.py文件都存在(你已经列出来了,这点没问题),Python 3.6.2需要这些文件来识别目录为包。
内容的提问来源于stack exchange,提问作者skytron87
相关产品推荐
相关产品推荐

