【发布时间】:2026-01-31 05:30:01
【问题描述】:
我目前正在尝试发布一些更大的项目。这就是我决定使用子模块的原因。看一下项目结构:
/sandbox
__init.py__
constants.py
/sub1
__init__.py
foo.py
在我的constants.py 文件中,我声明了一个全局变量:
MYGLOBAL = 42
我想在foo.py 中使用它的值。该文件有 2 个测试函数:
def foofunc():
return 'I am foo.'
def constfunc():
return 'I am {MYGLOBAL}.'
另外,我把这段代码放到/sandbox/sub1/__init__.py:
from .foo import *
from sandbox.constants import *
现在,当我使用我的解释器时,我会尝试像这样使用这两个函数:
>> import sandbox.sub1
>> sandbox.sub1.foofunc()
'I am foo.'
>> sandbox.sub1.MYGLOBAL
42
>> sandbox.sub1.constfunc()
NameError: name 'MYGLOBAL' is not defined
据我了解,全局变量与函数在同一个命名空间中,但不知何故函数看不到它。
如何访问它? Python 版本是 3.6。
谢谢!
【问题讨论】:
标签: python python-3.x packaging