gpt4 book ai didi

python - 强制从当前目录导入模块

转载 作者:IT老高 更新时间:2023-10-28 21:14:04 27 4
gpt4 key购买 nike

我的包 p 包含模块 aba 依赖于 b:

b.py 内容:

import a

但是我想确保 b 从同一个 p 包目录导入我的 a 模块,而不是仅来自 PYTHONPATH 的任何 a 模块。

所以我试图改变 b.py 如下:

from . import a

只要我在 p 包目录之外导入 b 就可以了。给定以下文件:

/tmp
/p
a.py
b.py
__init__.py

以下作品:

$ cd /tmp
$ echo 'import p.b' | python

以下操作无效:

$ cd /tmp/p
$ echo 'import b' | python
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "b.py", line 1, in <module>
from . import a
ValueError: Attempted relative import in non-package

为什么?

附:我正在使用 Python 2.7.3

最佳答案

重读Python后import documentation ,我原来的问题的正确答案是:

为了确保 b 从自己的包中导入 a,只需在 b 中编写以下内容即可:

import a

这是来自文档的引用:

The submodules often need to refer to each other. For example, the surround module might use the echo module. In fact, such references are so common that the import statement first looks in the containing package before looking in the standard module search path.

注意:正如 J.F. Sebastian 在下面的评论中所建议的,不建议使用隐式导入,事实上,它们在 Python 3 中已经消失了。

关于python - 强制从当前目录导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216200/

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