sách gpt4 ai đã đi

Python import AS không thành công do lệnh import tuyệt đối

In lại 作者:行者123 更新时间:2023-12-04 16:51:32 31 4
mua khóa gpt4 Nike

在我长期使用 python 的经验中,我遇到了一个非常奇怪的问题。

提前我想说我想知道为什么会发生这种情况 ,而不是如何更改我的代码或如何修复它,因为我也可以做到。

我正在使用 python2.7.3 并使用 __future__ absolute_import特征。
我有一个有点复杂的模块结构..我有一个模块 q.x.y.z .如果在顶部我做 import q.x.a.b它有效,但如果我这样做 import q.x.a.b as _b它没有说 q.x 没有“a”(在这个模块之前已经导入了几次)任何人都有足够的经验来知道发生了什么?
我很确定这不是循环导入问题,因为我只需要删除“as _b”并且它神奇地起作用。而且也不是命名问题,因为我对此非常小心。

文件结构如下:

q/
+ __init__.py
+ main.py #execution entry point
--- x/
+ __init__
+ a/
+ __init__
+ b.py
+ y/
+ __init__
+ z.py # import q.x.a.b

它从 q 的父文件夹运行
pkg> python q\main.py
它包含以下内容:
from __future__ import absolute_import
import sys, os

if __name__=='__main__':
sys.path[0] = os.getcwd()
import q
q.run()

与循环导入有点相关,但主要问题是 为什么当我使用“as”时会发生这种情况?

回溯是这样的:
q/main.py: q.run()
q/x/__init__.py : from q.x import a, y, k
q/x/a/__init__.py : from q.x.a import d, e, f
q/x/a/f.py : from q.x.y import z as _z
q/x/y/__init__.py : from q.x.y import g, h, z
q/x/y/h.py : import q.x.a.d as _d

这有什么关系吗?
https://stackoverflow.com/a/1835089/260242
或这个
https://stackoverflow.com/a/11309252/260242

代码示例,它实际上失败了...转到 test/q/x/y/h.py 并更改 import ... as _d 以 import ... 你会看到
http://puu.sh/16C3j

1 Câu trả lời

抱歉,无法重现,至少使用我身边的 Python 2.6.5。

请花时间隔离在干净的树中显示问题的最小案例。我将从您当前树的副本开始,修剪任何不相关的目录并删除函数定义等,所有这些都不断检查问题是否仍然存在。该过程要么收敛到显示错误的最小情况,要么(更有可能)显示真正导致这种奇怪行为的看似无关的事情。

这是我在 Linux 控制台上的工作日志;你可以在一个空目录中重放它。

mkdir -p q/{x,y}
echo > q/__init__.py
echo > q/x/__init__.py
echo > q/y/__init__.py
mkdir -p q/x/a
echo > q/x/a/__init__.py
echo "place='This is q.x.a.b'" > q/x/a/b.py
echo -e "import q.x.a.b as _b\n\nprint _b.place" > q/y/z.py
python -c 'from __future__ import absolute_import; import q.y.z'

预计它会打印 This is q.x.a.b .

关于Python 导入 AS 因绝对导入而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494761/

31 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com