我在python 3中制作一个机器人并希望它能够轻松扩展,所以我有一个中央文件,然后每个命令一个。我想知道是否有一种方法可以导入一个完整模块的子目录,而无需单独导入每个模块。例如:
example
├── commands
│ ├── bar.py
│ └── foo.py
└── main.py
main.py
中的代码类似于:
import /commands/*
谢谢:D
解决方案:
分别导入每个:
from commands import foo, bar
from commands import *
不起作用。
答案 0 :(得分:0)
如果您使用的是python3,则importlib
模块可用于动态导入模块。在python2.x上,有__import__
函数,但我对语义不是很熟悉。作为一个简单的例子,
我当前目录中有2个文件
# a.py
name = "a"
和
# b.py
name = "b"
在同一目录中,我有这个
import glob
import importlib
for f in glob.iglob("*.py"):
if f.endswith("load.py"):
continue
mod_name = f.split(".")[0]
print ("importing {}".format(mod_name))
mod = importlib.import_module(mod_name, "")
print ("Imported {}. Name is {}".format(mod, mod.name))
这将打印
importing b Imported <module 'b' from '/tmp/x/b.py'>.
Name is b
importing a Imported <module 'a' from '/tmp/x/a.py'>.
Name is a
答案 1 :(得分:-2)
分别导入每个:
from commands import bar
和
from commands import foo
from commands import *
不起作用。