【问题标题】:Python: Calling a function from a file that has current file importedPython:从导入了当前文件的文件中调用函数
【发布时间】:2013-10-20 08:32:40
【问题描述】:

我尝试四处搜索,但似乎没有找到我的问题的答案,所以如果我错过了一些东西,我很抱歉,它实际上已经得到了回答。

所以基本上我有 main.py 和另一个名为 check.py 的文件(都在同一个目录中)

在我的 main.py 中有:

from check import checkfunction

我在 main.py 中有一个小函数,我必须在 check.py 中调用它,但我似乎无法在我的 check.py 上执行此导入:

from main import mainfunction

如何让 main 函数在 check.py 中工作?

谢谢!

【问题讨论】:

  • “无法正常工作”是什么意思?确切的错误或问题是什么?
  • 当我运行 main.py 时,我收到错误“ImportError: cannot import name checkfunction”。只有当我都相互导入时才会发生。
  • 导入整个模块,分别用main.mainfunctioncheck.checkfunction调用函数。
  • 在main.py里面我把import改成了“import check”,在check.py里面我分别改成了“import main”。现在,当我尝试在 main.py 中使用“check.checkfunction”时,出现以下错误: ImportError: cannot import name checkfunction

标签: python function import call main


【解决方案1】:

你的设计具有循环依赖,这通常是一件坏事,因为你的两个 python 模块是紧密耦合的。

考虑重构您的代码。但是,如果您必须坚持您的设计,请参阅以下 SO question,了解有关循环导入如何在 Python 中工作以及需要注意的各种问题的更多信息。

【讨论】:

    【解决方案2】:

    几个选项:

    • 将通用函数移至由其他两个模块导入的模块中。
    • 将两个模块合并为一个。
    • 将函数从 main 传递给需要调用它的代码。
    • Monkey 将函数导入到 check 模块后。
    • 重构整个事情,使您没有循环依赖。

    如果你真的解释了为什么你有这个设计,有人可能会提出更好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      相关资源
      最近更新 更多