[英]ImportError: cannot import module
包看起來像這樣:
在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
但我必須將第二個文件的函數導入第三個文件,反之亦然。
我能做什么?
如您所述, HTTPQuery
和SmartDownload
之間存在循環依賴關系。 簡單的解決方法是將導入移動到需要它的函數中,例如
# SmartDownload.py
def download(url):
from HTTPQuery import Is_ServerSupportHTTPRange
...
更好的解決方案可能是重新組織您的模塊。 如果沒有合理的方法來消除HTTPQuery
對SmartDownload
的依賴,反之亦然,請考慮將它們合並到一個模塊中。
您最好的選擇是重新組織依賴項,以便您沒有此循環導入問題。 除此之外,您可以簡單地將from SmartDownload import DownloadFile
的行移動到HTTPQuery.py文件的底部以打破循環。
有一點對循環進口的討論在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.