python - ImportError:无法导入模块

标签 python importerror python-import

包看起来像这样:

  • 主要文件
  • 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 的依赖,反之亦然,请考虑将它们合并到一个模块中。

关于python - ImportError:无法导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433900/

相关文章:

python - Matplotlib:为左侧和右侧设置不同的边距

python - 在 Ipython : ImportError: No module named 'ipdb' 中导入时出现问题

python - OpenCV-Python导入错误: DLL load failed: The specified module could not be found

python - 导入 mlxtend python 的问题

python - ctypes:传递和读取枚举指针

python - asciimatics 太多值无法解压(预期 2)错误

django - 无法为API设置“DEFAULT_AUTHENTICATION_CLASSES”导入“oauth2_provider.ext.rest_framework.OAuth2Authentication”

python - 什么是兄弟进口?

python - 在一个程序中以两种不同的方式导入同一个模块是否有意义?

Python 3 托管