簡體   English   中英

ImportError:無法導入模塊

[英]ImportError: cannot import module

包看起來像這樣:

  • main.py
  • HTTPQuery.py
  • SmartDownload.py

在main.py中我from SmartDownload import DownloadFile運行。

在Smartdownload.py中,我from HTTPQuery import Is_ServerSupportHTTPRange運行

在HTTPQuery中我from SmartDownload import DownloadFile運行

似乎我陷入了循環,因為這是錯誤:

Traceback (most recent call last):
  File "C:\Scripts\mp3grabber\main.py", line 13, in <module>
    import HTTPQuery
  File "C:\Scripts\mp3grabber\HTTPQuery.py", line 6, in <module>
    from SmartDownload import DownloadFile
  File "C:\Scripts\mp3grabber\SmartDownload.py", line 3, in <module>
    from HTTPQuery import Is_ServerSupportHTTPRange
ImportError: cannot import name Is_ServerSupportHTTPRange

但我必須將第二個文件的函數導入第三個文件,反之亦然。

我能做什么?

如您所述, HTTPQuerySmartDownload之間存在循環依賴關系。 簡單的解決方法是將導入移動到需要它的函數中,例如

# SmartDownload.py
def download(url):
    from HTTPQuery import Is_ServerSupportHTTPRange
    ...

更好的解決方案可能是重新組織您的模塊。 如果沒有合理的方法來消除HTTPQuerySmartDownload的依賴,反之亦然,請考慮將它們合並到一個模塊中。

您最好的選擇是重新組織依賴項,以便您沒有此循環導入問題。 除此之外,您可以簡單地將from SmartDownload import DownloadFile的行移動到HTTPQuery.py文件的底部以打破循環。

有一點對循環進口的討論在這里

暫無
暫無

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

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