【问题标题】:Dynamically importing modules in Python3.0?在 Python3.0 中动态导入模块?
【发布时间】:2010-12-05 18:47:09
【问题描述】:

我想动态导入一个模块列表。我在执行此操作时遇到问题。 Python 总是喊出ImportError 并告诉我我的模块不存在。

首先我得到模块文件名列表并去掉".py" 后缀,如下所示:

viable_plugins = filter(is_plugin, os.listdir(plugin_dir))
viable_plugins = map(lambda name: name[:-3], viable_plugins)

然后我os.chdir 到插件目录和map __import__ 整个东西,像这样:

active_plugins = map(__import__, viable_plugins)

但是,当我将active_plugins 变成一个列表并尝试访问其中的模块时,Python 会抛出一个错误,说它无法导入这些模块,因为它们似乎不存在。

我做错了什么?


编辑:通过简单地使用交互式解释器,执行os.chdir__import__(modulefilename) 会产生我所需要的。那么,为什么上述方法不起作用呢?我对 Python 的更多功能部分做错了吗?

【问题讨论】:

    标签: python import python-3.x


    【解决方案1】:

    它说它不能这样做,因为即使您将目录更改为模块所在的位置,该目录也不在您的导入路径上。

    您需要做的,而不是更改到模块所在的目录,而是将该目录插入sys.path

    import sys
    sys.path.insert(0, directory_of_modules)
    # do imports here.
    

    【讨论】:

      猜你喜欢
      • 2013-08-09
      • 1970-01-01
      • 2020-07-18
      • 2020-07-25
      • 2011-04-17
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多