关于python:当x是字符串时,如何”从x导入*”

How to `from x import *` when x is a string

我正在制作一个程序,在这个程序中,用户可以保存一个文件,将其加载回去,并按照他们想要的方式命名该文件。

如何动态导入该模块的所有属性?

例如下面的伪代码:

1
2
module_name = input()
from module_name import *

假设module_name以".py"结尾。我使用的是python 3.5。


这听起来是一个糟糕的想法,但这里有一个加载math模块并使用其某些功能的示例。

1
2
3
4
5
6
7
import importlib

my_module = importlib.import_module('math')    
globals().update(my_module.__dict__)

print(globals())
print(sin(pi/2))

(code improvements by jmd_dk)

这听起来是个坏主意,因为from x import *将导入所有内容,并可能覆盖本地属性。

此外,使用字典很可能有更清晰的方法来实现您的目标。