gpt4 book ai didi

python - 包内显式相对导入不使用关键字 from

转载 作者:行者123 更新时间:2023-12-01 08:36:04 25 4
gpt4 key购买 nike

我有以下包结构:

mypkg
├── mymodule
│ ├── __init__.py
│ └── ...
├── mylib.py
└── script.py

script.py 中,我可以执行 from .mymodule import Xfrom .mylib import Y 并且适用于 Python 2 和Python 3。

在 Python 2 中,我可以执行 import mymoduleimport mylib 并且它工作正常,然后我可以执行 mymodule.Xmylib.Y.

在Python 3中,我无法执行import .mymoduleimport .mylib(语法错误),如果我删除前导点,我会得到:ModuleNotFoundError:没有名为“mymodule”的模块ModuleNotFoundError:没有名为“mylib”的模块

读完这篇文章后question我知道我需要前导点,但为什么我会收到语法错误?如何让这些导入同时适用于 Python 2 和 3?

更新:为了将来引用,我现在的包结构是:

mypkg
├── __init__.py
├── mymodule
│ ├── __init__.py
│ └── ...
├── mylib.py
└── script.py

最佳答案

你需要

from . import mymodule

from . import mylib

显式相对导入必须使用from语法。设计意图是,import ...from ... import ... 中的 import 之后的任何内容都是有效的表达式导入后访问导入的东西,.mymodule 不是有效的表达式。

关于python - 包内显式相对导入不使用关键字 from,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53714173/

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