在Python上导入无法正常工作

时间:2019-01-16 13:58:23

标签: python python-import

尽管应该导入变量,但出现“未定义名称X”的异常。

main.py

from config import *
from utils import *
say_hello()

utils.py

from config import *
def say_hello():
    print(config_var)

config.py

from utils import *
config_var = "Hello"

尝试运行“ main.py”:

  

回溯(最近通话最近):     在第3行的文件“ main.py”中       问好()     在say_hello中的第3行,文件“ C:\ Users \ utils.py”       打印(config_var)   NameError:名称“ config_var”未定义

这里发生了什么?为什么无法从utils.py访问some_var?

3 个答案:

答案 0 :(得分:0)

您正在util中导入config,在config中导入util,这将导致此错误(创建交叉循环)。从config.py中删除from utils import *,然后尝试执行此操作。

在main.py中,您不需要导入from config import *,除非您直接在main()中使用config中的变量

答案 1 :(得分:0)

您还应该导入config.config_var,因为此变量属于该特定模块

答案 2 :(得分:0)

您要创建许多import语句,也许可以尝试以下操作,但是如果要在utils.py中传递参数,则还需要在utils.py中定义一个参数。

在utils.py中,由于您要打印出适当的值,因此需要传递参数。在config.py中,您要定义一个值。然后,在main.py中(如前所述)在这种情况下使用通配符“ *”并不完全适合,然后为了调用相应的函数,您需要通过其文件名来对其进行寻址

在utils.py中:

def say_hello(config_var):
    print(config_var)

在config.py

config_var = "Hello"

然后在main.py

import config as cn
import utils as ut
ut.say_hello(cn.config_var)

查看该线程以了解如何编写python模块How to write a Python module/package?