gpt4 book ai didi

python - 对 __init__.py 和导入感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:12 26 4
gpt4 key购买 nike

所以我有一个像这样的目录设置:

some_dir/
foo/
bar/
test.py
src/
__init__.py
data/
__init__.py
utils.py

我想从我的 test.py 模块导入 utils.py

import sys.path
sys.path.append("../../")
from src import data
data.utils // this throws an error AttributeError: module 'src.data' has no attribute 'utils'

但是当我这样做的时候:

import sys.path
sys.path.append("../../")
from src.data import utils

一切正常,这是为什么?

最佳答案

a) from src.data import utils 将导入 utils.py,所以一切正常。

b) from src import data 只会导入数据包,不会导入utils.py,如果需要,需要添加显式导入data文件夹下的__init__.py,如下所示:

1) 如果需要同时支持python3 & python2:

__init__.py:

import src.data.utils # absolute import

或者:

__init__.py:

from . import utils # relative import

2)如果只是需要支持python2,就简单点:

__init__.py:

import utils

然后,当导入包时,该包下的__init__.py也会被执行。

关于python - 对 __init__.py 和导入感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52789904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com