[英]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.