簡體   English   中英

我該如何解決這個不能 ImportError: cannot import name in python3

[英]How can I solve this cannot ImportError: cannot import name in python3

參考資料庫 --> https://github.com/SavSanta/bluinfo

所以,我試圖導入我在名為BDROM的文件中創建的bluinfo.py (第 27 行)

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

我收到ImportError: cannot import name 'BDROM'

我不知道如何讓這個壞小子工作。 其他帖子 state 它可能與 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'

任何想法表示贊賞!

在您的第三次嘗試中,您有一個循環導入。 重組你的代碼以避免這種情況。

例如,您可能能夠消除這些導入之一,並且您將擺脫循環依賴。

  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.py的目錄中有一個名為blueinfo的文件,因此import blueinfo語句可能意味着 package (目錄)或模塊(文件)。 您可以考慮將 blueinfo 目錄中的文件重命名為更具描述性的名稱,以避免這種歧義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM