繁体   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