擅长:python、mysql、java
<p>我刚刚遇到了一个完全不同的堆栈的同一个TypeError消息。在</p>
<p>搜索整个错误消息会得到两个结果:这个问题和Python的import.c源代码。
因此,经过一点挖掘之后,我发现这个特定的错误是由于向<code>__import__</code>内置函数传递了一个不是字符串的导入名称时引起的。在</p>
<p>重要的词是<em>string</em>-ie.a<code>str</code>对象。其他任何内容(例如<code>unicode</code>)都将被拒绝,并出现这里描述的错误。在</p>
<p>因此,解决方案是:无论您将模块/成员名称传递给将动态导入它的某个对象,请确保它是<code>str</code>,而不是<code>unicode</code>。在</p>
<p>失败:</p>
<pre><code>__import__('mylib.foo', globals(), locals(), [u'bar'])
</code></pre>
<p>工作:</p>
^{pr2}$
<p>当然,这可能只与Python2.x有关,因为3.x处理字符串/unicode的方式不同。在</p>