gpt4 book ai didi

python - 导入错误: cannot import name - Works in one place but not in the other one

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:26 24 4
gpt4 key购买 nike

所以我有这个目录结构:

proj/
|
---/subDirA
|
---__init__.py
---fileA.py
|
---/subDirB
|
---__init__.py
---fileB.py
|
---start.py

所以我想做的是从 fileB.py 导入 FileA.py 中的函数。所以我尝试了这个:

from subDirA.fileA import funct

当我这样做时,我收到以下错误:

ImportError: cannot import name funct

但是如果我这样做:

from subDirA.fileA import *

我没有收到此错误。有人可以解释一下为什么我会收到此错误吗?

注意

文件 FileA.py 只有两个函数,第一个函数是我在运行 start.py 时使用 from subDirA.fileA import funct 导入的。当我运行 start.py 时出现错误,在 fileB.py 中我尝试使用 from subDirA.fileA import funct2 导入第二个函数

最佳答案

导入时您的 fileA 模块对象上没有 funct。虽然循环导入是此问题的最常见原因,但它也可能是拼写错误或其他几个问题之一。

如果您将模块作为一个整体导入,并将 funct 引用为 fileA.funct,则该问题可能会消失,因为 fileA.funct > 只需要在运行时可用,而不是在导入时可用。

您也可以在导入后立即尝试执行 print(dir(fileA)) 来查看此时其中的内容。您还可以在 fileA.py 中的 funct 定义之后立即放置一个 print() ,以查看在获得此定义之前该定义是否被执行错误:

def funct(args):
do_stuff()
print('funct() declared!')

如果您尝试自行执行 fileB.py,您不会期望这些导入能够工作,因为工作目录不是 proj。工作目录必须是 proj 才能正确解析这些导入。但是,这显然不是这里的问题,否则您将无法进行星型导入。

关于python - 导入错误: cannot import name - Works in one place but not in the other one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26810219/

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