sha*_*vey 42 python program-entry-point init
我正试图从其内部访问模块的数据__main__.py
.
结构如下:
mymod/
__init__.py
__main__.py
Run Code Online (Sandbox Code Playgroud)
现在,如果我__init__.py
像这样公开一个变量:
__all__ = ['foo']
foo = {'bar': 'baz'}
Run Code Online (Sandbox Code Playgroud)
如何访问foo
从__main__.py
?
小智 23
你需要要么有包已经在sys.path
中,添加包含目录mymod
,以sys.path
中__main__.py
,或使用-m
开关.
添加mymod
到路径将看起来像这样(in __main__.py
):
import sys
import os
path = os.path.dirname(sys.modules[__name__].__file__)
path = os.path.join(path, '..')
sys.path.insert(0, path)
from myprog import function_you_referenced_from_init_file
Run Code Online (Sandbox Code Playgroud)
使用-m
开关想:
python -m mymod
Run Code Online (Sandbox Code Playgroud)
有关更多讨论,请参阅此答案.