使用imp动态导入模块

19 投票
2 回答
31366 浏览
提问于 2025-04-16 11:38

我正在尝试动态地从一个不同的文件夹导入一个模块。我在参考这个问题的答案。我有一个名为bar的模块,它在一个叫foo的文件夹里。我的主脚本将在foo的上级目录中运行。

这是我在测试脚本中写的代码(这个脚本在foo的上级目录中运行)

#test.py
import imp

mod = imp.load_source("bar","./foo")

还有bar.py的代码

#bar.py
class bar:

    def __init__(self):
          print "HELLO WORLD"

但是当我运行test.py时,我遇到了这个错误:

Traceback (most recent call last):
  File "C:\Documents and Settings\user\Desktop\RBR\test.py", line 3, in <module>
    mod = imp.load_source("bar","./foo")
IOError: [Errno 13] Permission denied

2 个回答

2

这看起来是个简单的路径问题——可以检查一下 __file__ 或者当前工作目录(cwd)……也许先试试用绝对路径来访问文件?——这个 示例 可能会对你有帮助。

34

imp.load_source 需要你提供模块的路径和文件名才能导入。你应该把你的代码改成下面这个:

mod = imp.load_source("bar","./foo/bar.py")

撰写回答