包看起来像这样:
- 主要文件
- 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
但我必须将第二个文件的函数导入到第三个文件中,反之亦然。
我能做什么?
最佳答案
如您所说,HTTPQuery
和SmartDownload
之间存在循环依赖关系。简单的解决方法是将导入移动到需要它的函数中,例如
# SmartDownload.py
def download(url):
from HTTPQuery import Is_ServerSupportHTTPRange
...
更好的解决方案可能是重新组织您的模块。如果没有合理的方法来移除 HTTPQuery
对 SmartDownload
的依赖,反之亦然,请考虑将它们合并到一个模块中。
关于python - ImportError:无法导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433900/