gpt4 book ai didi

python - 默认情况下,python27 中的导入不应该是绝对的吗?

转载 作者:IT老高 更新时间:2023-10-28 21:11:23 26 4
gpt4 key购买 nike

想象一下目录结构:

/    a/        __init__.py        b.py        c.py    c.py

File /a/b.py looks like:

import cshould_be_absolute = c

All the other files (including __init__) are empty.

When running a test script (using python 2.7):

import a.b
print a.b.should_be_absolute

PYTHONPATH=/从一个空目录(所以没有从当前目录添加到 PYTHONPATH)我得到

<module 'a.c' from '/a/c.py'>

根据 PEP 328 在哪里和声明 import <> is always absolute我希望:

<module 'c' from '/c.py'>

当我删除 /a/c.py 时,输出与预期一致文件。

我错过了什么?如果这是正确的行为 - 如何导入 c来自 b 的模块(而不是 a.c )?

更新:

根据python dev mailing list它似乎是文档中的一个错误。默认情况下,python27 中的导入不是绝对的。

最佳答案

您需要在 Python 2.7 上添加 from __future__ import absolute_import 或使用 importlib.import_module('c')

这是 Python 3 的默认设置。

Python 中有一个错误:__future__.py and its documentation claim absolute imports became mandatory in 2.7, but they didn't .

关于python - 默认情况下,python27 中的导入不应该是绝对的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11726633/

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