从子文件夹导入模块 - 语法无效

问题描述 投票:0回答:1

这是我的Python项目文件夹结构。

project\
    main_code.py
    code\
         __init__.py
         s_utils.py

    data\

main_code.py
我尝试过:

import os 
os.chdir('absolute path to project folder')
from .code import s_utils

最后一行返回错误:

ImportError: attempted relative import with no known parent package

这里出了什么问题?根据这篇post它应该可以工作。

python import subdirectory relative-path
1个回答
0
投票

当您直接运行

main_code.py
时,Python 不会将其视为包的一部分。相对导入(以
.
开头)旨在在包内使用,而不是在顶级脚本中使用。因此,相对导入无法按预期发挥作用。

作为解决方案,您可以将相对导入替换为绝对导入:

import os
from code import s_utils

或者将项目目录添加到Python路径中:

import os
import sys

project_dir = 'absolute path to project folder'
sys.path.append(project_dir)

from code import s_utils
© www.soinside.com 2019 - 2024. All rights reserved.