проблемы с импортом модуля Python - PullRequest
7 голосов
/ 03 июня 2011

Я пытаюсь использовать модуль 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 ]

7 голосов
/ 04 июня 2011

Я предполагаю, что вы создали bitstring.py в вашем текущем каталоге.

1 голос
/ 04 июня 2011

Проблема вызвана файлом bitstring.py в sys.path из test.py, но не в интерактивной оболочке python.Скорее всего, в каталоге находится bitstring.py файл, в котором находится test.py, и вы запустили свою оболочку из другого рабочего каталога.

Поскольку python проходит sys.path от начала до конца, модули в текущем каталоге- даже если случайно создан - затмить те, что в каталогах системной библиотеки.

0 голосов
/ 04 июня 2011

Google App Engine фактически имел похожую проблему в одной точке.Самым простым решением было просто прокомментировать оскорбительную строку или использовать попытку ... кроме.Очевидно, что это не сработает.

В этом случае проблема была в порядке инициализации.Через полсекунды аналогичная строка кода была вызвана снова с успехом.Их решение?рефакторинг.: - (

Лучшее, что я видел, - это динамический поиск класса: bitstring.__dict__.get("BitArray") или getattr(bitstring, "BitArray");. Это не идеально (и я думаю, что я даже видел, что они возвращают нуль),но, надеюсь, это может вас куда-нибудь достать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...