我想构造一个模拟 from package_name import *
. 虽然这个问题回答了如何通过修改globals()
. globals()
但是,对于定义函数的模块来说,它是本地的。
例如,假设我在 中定义以下函数first_package.py
,
import imp
def load_contents(path):
"""Load everything from another package"""
module = imp.load_source('', path)
for k in dir(module):
if not '__' in k: # ignore __xxx__ private variables
globals()[k] = getattr(module, k)
然后在中运行以下代码second_package.py
import first_package
first_package.load_contents('third_package.py')
什么都不会发生。我怎样才能解决这个问题?