The package looks like this:
- main.py
- HTTPQuery.py
- SmartDownload.py
in main.py I run from SmartDownload import DownloadFile.
in Smartdownload.py I run from HTTPQuery import Is_ServerSupportHTTPRange
in HTTPQuery I run from SmartDownload import DownloadFile
It seems that I get stuck in a loop, because this is the error:
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
But I must import second file’s functions into the third file and vice-versa.
What can I do?
As you suggest, there is a circular dependency between
HTTPQueryandSmartDownload. The easy fix is to move the import into the functions that require it, e.g.A better solution might be to reorganize your modules. If there is no reasonable way to remove
HTTPQuery‘s dependence onSmartDownloador vice versa, consider merging them into one module.