我的结构如下:
PACKAGE/
__init__.py
mod1.py
mod2.py
...
code.py
在mycode.py
中,我想导入整个包文件夹:
import PACKAGE
# execute some functions from mod1, mod2 or ... here.
为了确保动态导入,我在__init__.py
中使用了以下代码:
import os
import importlib
for module in os.listdir(os.path.dirname(__file__)):
if module == '__init__.py' or module[-3:] != '.py':
continue
importlib.import_module(module[:-3], package='PACKAGE')
del module
但是,执行code.py
会导致ModuleNotFoundError: No module named 'mod1'
我想知道为什么?到现在为止,我读了几篇试图实现我想做的事情的文章,但都没有成功。这个对我来说似乎是最有前途的,但我不工作
我在这里看不到什么
另外,正如在评论中提到的,from PACKAGE import *
可以做到这一点,但我希望保留导入适当包的导入形式,如import PACKAGE
您必须将包名ate附加到模块字符串的开头,否则它会给出一个
no module named <filename> ImportError
您可以使用importlib
最好的方法是列出当前文件夹中的所有python(.py)文件,并将它们作为init.py中的all变量
相关问题 更多 >
编程相关推荐