导入python模块的问题

时间:2011-06-03 19:39:17

标签: python module import

我正在尝试在脚本中使用python的bitstring模块,并且收到导入错误。从交互模式运行时不会发生此错误。

以下是代码:

import bitstring
b = bitstring.BitArray(bin='001001111')

当这样跑:

python test.py

我明白了:

AttributeError: 'module' object has no attribute 'BitArray'

然而,当我这样做时:

$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import bitstring
>>> b = bitstring.BitArray(bin='001001111')
>>> print b
0b001001111

它工作得很好!它是由同一个用户运行的相同解释器。有什么指针吗?

3 个答案:

答案 0 :(得分:7)

我预测你在当前目录中创建了一个bitstring.py。

答案 1 :(得分:1)

问题是由bitstring.py sys.path中的test.py文件导致的,而不是交互式python shell中的bitstring.py文件。最有可能的是,test.py目录中有一个sys.path文件,您从另一个工作目录启动了shell。

由于python从前到后遍历{{1}},因此当前目录中的模块 - 即使意外创建 - 也会掩盖系统库目录中的模块。

答案 2 :(得分:0)

实际上,Google App Engine实际上只有一个similar issue。最简单的解决方案是简单地评论违规行或使用try ...除外。显然这不会起作用。

在这种情况下,问题是初始化顺序。半秒后,类似的代码行再次成功调用。他们的解答?重构。 : - (

我见过的最好的是动态查找课程:bitstring.__dict__.get("BitArray")getattr(bitstring, "BitArray");。它并不理想(我相信我甚至看到那些返回null),但希望它可以让你到达某个地方。