python导入文件夹中的所有文件都不工作

2024-06-16 13:33:31 发布

您现在位置:Python中文网/ 问答频道 /正文

from os import listdir
modo= [name.split(".py")[0] for name in listdir("scripts") if name.endswith(".py")]
modules = {}
for modu in modo:
    modules[modu] = __import__(modu)
test_samp.function("test") 

你好! 如果,说“测试”_samp.py公司“存在于脚本目录中,为什么 这不允许我运行测试_samp.函数(“测试”)? 它返回:

^{pr2}$

Tags: nameinfrompytestimportmodulesfor
3条回答

您可以使用以下命令运行它:

modules["test_samp"].function("test")

代码中有两个问题:

  • __import__不导入全局命名空间,它返回一个模块
  • {{cd2>正在尝试导入{cd2}

你真正想要的是:

scripts = __import__("scripts", fromlist=modo)
scripts.test_samp.function("test") 

上面的__import__返回scripts包,其中加载了所有子模块。别忘了通过在scripts目录中创建__init__.py使其成为一个包。在

另请参见:Why does Python's __import__ require fromlist?

您没有定义test_samp您正在定义modules['test_samp']。另外,如果它在脚本中需要导入scripts.test_samp

在你的情况下,使用包。添加空的(或不是)__init__.py(带2个下划线)。并使用import scripts。使用scripts.test_samp.function("test")访问函数。您可以使用reload(scripts)重新加载所有包。在

相关问题 更多 >