首页 > 解决方案 > 无法从模块导入函数

问题描述

基本上我有 3 个模块,它们都相互通信并导入彼此的功能。我正在尝试从我的 shigui.py 模块中导入一个为程序创建 gui 的函数。现在我有一个函数可以获取 gui 中用户条目的值,我想将它们传递给另一个模块。我正在尝试传递以下功能:
def valueget(): keywords = kw.get() delay = dlay.get() category = catg.get()

所有导入都很好,直到我尝试将此函数导入
from shigui import valueget另一个将使用这些值的模块。事实上,我无法从这个文件中将任何函数导入任何模块。另外我应该补充一点,它们在同一个目录中。我很感激在这件事上的任何帮助。

标签: pythonfunctiontkinterimport

解决方案


好吧,我不完全确定什么进口什么,但这是我可以告诉你的。Python有时可以允许循环依赖。但是,这取决于您的依赖项的布局是什么。首先,我想说看看是否有任何方法可以避免这种情况发生(重组代码等)。如果这是不可避免的,那么您可以尝试一件事。当 Python 导入模块时,它会按照代码执行的顺序进行。这意味着如果您在导入之前有一个定义,您有时可以通过在第二个模块中导入第一个模块来访问第一个模块中的定义。让我举个例子吧。假设您有两个模块,A 和 B。

A:

def someFunc():
    # use B's functionality from before B's import of A
    pass

import B

乙:

def otherFunc():
    # use A's functionality from before A's import of B
    pass

import A

在这种情况下,Python 将允许这样做。但是,进口后的一切并不总是公平的,所以要小心。如果你想知道为什么会这样,你可以更多地阅读 Python 的模块系统。

有用但不完整的链接:https ://docs.python.org/3/tutorial/modules.html


推荐阅读