如何解决无法导入错误:无法在python3中导入名称

2024-10-01 07:46:22 发布

您现在位置:Python中文网/ 问答频道 /正文

供参考的存储库-->https://github.com/SavSanta/bluinfo

因此,我试图导入一个类BDROM,我在名为bluinfo.py的文件中创建了这个类。(第27行)

通过将行from bluinfo import BDROM添加到bluinfo-gui.py(第8行)

我收到ImportError: cannot import name 'BDROM'

我想不出怎样才能让这个坏小子工作。其他帖子指出它可能与PYTHONPATH有关(尽管类似的导入已经在程序的其他部分工作,并且所有文件都在同一目录中)


我试图通过以下方式更改导入语句,但没有成功:

  1. 从.bluinfo导入BDROM
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named '__main__.bluinfo'; '__main__' is not a package
  1. 从..bluinfo导入BDROM
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: attempted relative import beyond top-level package
  1. 创建一个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'

任何想法都值得赞赏


Tags: 文件infrompyimportlineguiblue
1条回答
网友
1楼 · 发布于 2024-10-01 07:46:22

在第三次尝试中,您有一个循环导入。重新构造代码以避免这种情况

例如,您可能能够消除其中一个导入,并且您将摆脱循环依赖

  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可能表示包(目录)或模块(文件)。您可以考虑将BLUBIONFILE目录中的文件重命名为更具描述性的内容,以避免这种歧义。

相关问题 更多 >