Python 子模块_uinit__u;.py未传递给脚本

Python 子模块_uinit__u;.py未传递给脚本,python,python-module,Python,Python Module,我的文件夹结构定义如下: \test main.py \module __init__.py foo.py main.py包含: from module.foo import bar bar() HELLO = "hello" def bar(): print(HELLO) \uuuu init\uuuu.py包含: from module.foo import bar bar() HELLO = "hello" def bar

我的文件夹结构定义如下:

\test
    main.py
    \module
        __init__.py
        foo.py
main.py
包含:

from module.foo import bar
bar()
HELLO = "hello"
def bar():
    print(HELLO)
\uuuu init\uuuu.py
包含:

from module.foo import bar
bar()
HELLO = "hello"
def bar():
    print(HELLO)
foo.py
包含:

from module.foo import bar
bar()
HELLO = "hello"
def bar():
    print(HELLO)
当我在命令行
python main.py
中运行时,我得到一个错误:

NameError: name 'HELLO' is not defined
我不明白为什么
\uuuu init\uuuuuuuuupy
没有将
HELLO
变量传递给
foo.py
在foo.py中,添加

from . import HELLO
因此导入变量
HELLO

变量
HELLO
的完全限定名是
module.HELLO
。这意味着
HELLO
在foo.py的包
模块中定义,添加

from . import HELLO
因此导入变量
HELLO


变量
HELLO
的完全限定名是
module.HELLO
。这意味着
HELLO
是在包
模块
中定义的。要定义此常量,您需要导入模块

例如:

foo.py
中,您必须:

from module import HELLO

def bar():
    print(HELLO)

要定义此常量,需要导入模块

例如:

foo.py
中,您必须:

from module import HELLO

def bar():
    print(HELLO)

您应该在
foo.py
中添加一个import语句。为什么您认为会这样?在我对模块中init.py的理解中,它生成变量,然后这些变量可用于与init.py相同模块中的脚本。我错了吗?如果是,我应该如何继续?我认为
\uuu init\uuuuuuuuupy
是由执行
导入
的模块“执行”的,而不是同一文件夹中的其他模块。您应该在
foo.py
中添加导入语句。为什么您认为会这样?在我对模块中init.py的理解中,它生成变量,这些变量随后可用于与init.py相同模块中的脚本。我错了吗?如果是,我应该如何继续?我认为
\uuuu init\uuuuuu.py
是由执行
导入的模块“执行”的,而不是同一文件夹中的其他模块。谢谢,这也意味着我对init.py的理解不正确。我真的认为,一旦加载一个模块,它就会运行init.py文件,并将结果提供给同一文件夹中的所有脚本。我知道这并不是那么简单。在我对
\uuuu init\uuuu
的理解中,它的意思是相反的。你向外界声明你包中的公共函数/类/变量。这正是我需要的句子!谢谢,那么这也意味着我对init.py的理解是不正确的。我真的认为,一旦加载一个模块,它就会运行init.py文件,并将结果提供给同一文件夹中的所有脚本。我知道这并不是那么简单。在我对
\uuuu init\uuuu
的理解中,它的意思是相反的。你向外界声明你包中的公共函数/类/变量。这正是我需要的句子!