python导入无法正常工作

时间:2012-12-07 08:09:58

标签: python import

我在python 2.7中总共有三个文件:

  1. 某个目录中的模块文件(例如module1.py
  2. 同一目录中的另一个模块,用于导入此模块(例如worker.py
  3. 导入worker.py
  4. 的顶级目录中的主要脚本

    当文件worker.py看起来如下

    import module1 as mod
    

    一切都按预期工作(即我可以在我的主代码中使用worker.mod.XXX)。但是,当我将worker.py的内容替换为如下(我希望这样做)时:

    mod = __import__('module1')
    

    我收到错误:ImportError: No module named module1。我需要后一种方法来处理从列表中自动导入模块的事情。

    我在这里缺少什么?

    更确切地说:我只是想找到一种方法来取代声明     将module1导入为mod 通过module1是一个字符串的表达式。我有例如modulname='module1',并希望使用字符串modulname中指定的模块名称导入模块。怎么做?

2 个答案:

答案 0 :(得分:3)

__import__(name, globals={}, locals={}, fromlist=[], level=-1) -> module

导入模块。因为这个函数适合Python使用 口译员而不是一般用途,最好使用 importlib.import_module()以编程方式导入模块。

globals参数仅用于确定上下文; 它们没有被修改。 locals参数未使用。来自清单 应该是一个模拟from name import ...的名称列表,或者是 用于模拟import name的空列表。 从包导入模块时,请注意__import__('A.B', ...) 当fromlist为空时返回包A,但其子模块B何时返回 fromlist不是空的。级别用于确定是否执行 绝对或相对进口。 -1是尝试的原始策略 绝对和相对进口,0是绝对,正数 是要相对于当前模块搜索的父目录的数量。

答案 1 :(得分:2)

试试这个:

mod = __import__('module1', globals=globals())