我正在尝试在脚本中使用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
它工作得很好!它是由同一个用户运行的相同解释器。有什么指针吗?
答案 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)
在这种情况下,问题是初始化顺序。半秒后,类似的代码行再次成功调用。他们的解答?重构。 : - (
我见过的最好的是动态查找课程:bitstring.__dict__.get("BitArray")
或getattr(bitstring, "BitArray");
。它并不理想(我相信我甚至看到那些返回null),但希望它可以让你到达某个地方。