使用Python中的“fromlist”的字符串索引的TypeError __import__

时间:2014-07-11 07:33:38

标签: python python-import

我正在使用别人的Python代码,它动态地导入了许多模块:

mod = __import__('outputs.'+filename,fromlist=['a']) #why does this work

显然,最后评论的存在有点令人担忧,但是我已经开始理解其他SO问题了。它成功导入了许多其他模块,但是只有一个特定文件:

filename = "http"
print(filename)
mod = __import__('outputs.'+filename,fromlist=['a']) #why does this work
print("success")

这给出了以下输出:

http
TypeError: list indices must be integers, not str

据我所知,这肯定是那条线问题;如果我将['a']更改为[],那么我会改为AttributeError

我尝试导入的模块的开头看起来与其他成功导入的模块相同(语法上):

<various import statements>
class http(output.Output):
    <some variables>
    def __init__(self,data):
        <some stuff>
    <some more defs>...

我很感激任何人可能有关于它为什么不起作用的建议。我是否应该专注于行为不端的模块本身而不是__import__声明(因为这适用于其他一切)?即使只是一个答案的提示也会很好!我不确定它是不是奇怪的东西,我对Python的不熟悉,或者只是其中一个看不见的树木日子!感谢。

2 个答案:

答案 0 :(得分:0)

查看__import__ fromlist,它表示仅当http不为空时才会返回子模块 - 所以我会猜测是谁写的那个是尝试要将whatevermod加入outputs,而不是fromlist__import__就行了,尽管原因不明。

我可以提供的另一件事是,可以用自己的功能替换*,也许这就是PP *所做的那样?

{{1}} PP =以前的程序员

答案 1 :(得分:0)

谢谢大家。在弄清楚如何获得完整的追溯之后,它清楚地表明问题在于我正在尝试加载的模块,并且与上面的任何代码无关。抱歉发表这样的反思,基本问题,但也要感谢你直接指导解决方案!