如何执行某些代码并在导入时将数据全局提供给模块

时间:2016-08-25 17:33:43

标签: python

我正在尝试构建一个包,我想要的是在导入时,一些代码会解析一组文件中的一些数据,然后我的模块可以使用一些字典。我想知道做这样的事情的最佳方法是什么。谢谢你的帮助。

所以,如果我的包裹是:

Package
    __init__.py
    *maybe other files*
    module1
        __init__.py
        foo.py
    module2
        __init__.py
        bar.py

我怎么能这样做,以便当我导入Package时,会运行一些设置代码来读取一些文件并生成一些字典,然后可以用于foo.py或bar.py等。

1 个答案:

答案 0 :(得分:1)

# run.py File where you are trying to display variable from other "global" module
import imp


def load_module(myglobals, path):
    with open(path, 'rb') as f:
        return imp.load_source(myglobals, path, f)


filename_path = '/home/turkus/myglobals.py'
module = load_module('myglobals', filename_path)
print module.CONSTANT


# myglobals.py (located in /home/turkus/myglobals.py
CONSTANT = 'something'

然后运行:

python run.py