python - 我该如何解决这个无法导入错误: cannot import name in python3

标签 python python-3.x python-import importerror

引用存储库 --> https://github.com/SavSanta/bluinfo

所以,我尝试导入我在名为 bluinfo.py 的文件中创建的类 BDROM。 (第 27 行)

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

我收到ImportError:无法导入名称“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
  • 从 ..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/

    相关文章:

    python - 如何在 Python 中加载子目录下的所有模块?

    python - 套接字队列(Twitter 流作为引用)

    python-3.x - Tkinter 图像应用程序在运行后一直卡住系统

    python-3.x - 如何使用 for 循环并排绘制图表

    python-3.x - 当模型包含 UDT 集时,Cassandra python 驱动程序 ORM 崩溃

    Python 2.7 ImportMismatchError 在 basedir 重命名后由过时的 pycache 引起

    python - wxPython 通过 py2app : "no appropriate 64-bit architecture" ERROR even though 32-bit preference set

    python - django 下的六个问题?

    Python 多处理和 Django - 我很困惑

    python - 计数器变量作为Python中for循环的步长值