引用存储库 --> https://github.com/SavSanta/bluinfo
所以,我尝试导入我在名为 bluinfo.py
的文件中创建的类 BDROM
。 (第 27 行)
通过将行 from bluinfo import BDROM
添加到 bluinfo-gui.py(第 8 行)
我收到ImportError:无法导入名称“BDROM”
我不知道如何让这个坏男孩工作。其他帖子指出它可能与 PYTHONPATH 有关(尽管类似的导入已在程序的其他部分中运行并且所有文件都在同一目录中)。
我尝试通过以下方式更改导入语句,但没有成功:
- 从 .bluinfo 导入 BDROM
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named '__main__.bluinfo'; '__main__' is not a package
- 从 ..bluinfo 导入 BDROM
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: attempted relative import beyond top-level package
- 创建一个 init.py 文件(我相信我读到的文件在 python3.x 中是不必要的)并尝试导入
$dev:/tmp/blue/bluinfo$ touch __init__.py
$dev:/tmp/blue/bluinfo$ python3 bluinfo-gui.py
Traceback (most recent call last):
File "bluinfo-gui.py", line 8, in <module>
from bluinfo import BDROM
File "/tmp/blue/bluinfo/bluinfo.py", line 8, in <module>
import ts_scanner as ScanTask
File "/tmp/blue/bluinfo/ts_scanner.py", line 5, in <module>
import ts_streamtypeclass
File "/tmp/blue/bluinfo/ts_streamtypeclass.py", line 3, in <module>
from bluinfo import BDROM
ImportError: cannot import name 'BDROM'
任何想法表示赞赏!
最佳答案
在第三次尝试中,您进行了循环导入。重组您的代码以避免这种情况。
例如,您也许能够消除这些导入之一,并且您将摆脱循环依赖。
File "/tmp/blue/bluinfo/bluinfo.py", line 8, in <module>
import ts_scanner as ScanTask
File "/tmp/blue/bluinfo/ts_streamtypeclass.py", line 3, in <module>
from bluinfo import BDROM
PS:由于您在名为 blueinfo
的目录中有一个名为 blueinfo.py
的文件,因此语句 import blueinfo
可能意味着包(目录)或模块(文件)。您可以考虑将 blueinfo 目录中的文件重命名为更具描述性的名称,以避免这种歧义。
关于python - 我该如何解决这个无法导入错误: cannot import name in python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62532783/