gpt4 book ai didi

python - 如何使用 Python 的 __import__ 函数执行 'from foo import *'

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:02 26 4
gpt4 key购买 nike

我想用包含 __init__.py 的目录 settings 实现的模块替换 Django 系统中的 settings.py。这将尝试导入以服务器命名的模块,从而允许按服务器进行设置。

如果我在导入模块之前不知道模块的名称,则无法使用 import 关键字,而必须使用 __import__ 函数。但这不会将该模块的内容添加到 settings 模块中。我需要相当于 from MACHINE_NAME import *。或者我需要一种方法来迭代 vars(m) (其中 m 是加载的模块)并将它们添加到当前命名空间。但我无法弄清楚如何引用当前 namespace 来进行分配。换句话说,我无法使用 setattr(x, ..) 或修改 x.__dict__,因为我不知道 x 使用什么.

除了使用 exec 之外,我现在想不出还有什么可以尝试的。这对我来说似乎有点无力。我是否缺少 Python 内省(introspection)的某些方面,这些方面允许我在当前范围内操作当前范围?

最佳答案

对于类似的情况,根据 lang 设置,我在 messages.py 模块中导入不同的消息,就像这样

# set values in current namespace
for name in vars(messages):
v = getattr(messages, name)
globals()[name] = v

顺便说一句,为什么要为settings.py创建一个包?你想做的任何事情都可以直接在settings.py中完成吗?

关于python - 如何使用 Python 的 __import__ 函数执行 'from foo import *',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1614884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com