Использование html-кода для импорта определенного модуля явно недоверчиво python-dev. Хотя это было filed as an issue, вероятность его фиксации низкая, потому что это рассматривается как неправильное использование fromlist
для начала, а не обязательно для ошибки, и доступно лучшее решение.
То, что вы должны делать это с помощью importlib.import_module
(доступен в стандартной библиотеке Python 2.7 и Python 3.1, или из PyPI с совместимостью обратно в Python 2.3 наряду с включения в Django 1.1, так как django.utils.importlib
). Это предотвратит эту проблему, обеспечит лучший программный интерфейс для импорта модулей и даже позволит вам использовать относительный импорт при указании импортируемого вами пакета.
Если вы действительно не можете использовать importlib (например, PyPi зависимости не допускается, даже если код, который вы можете свободно копировать благодаря лицензии ФСФА и быть довольно короткими), то вы должны делать __import__("some.module"); mod = sys.modules["some.module"]
. Это официальное, санкционированное решение python-dev проблемы (но только после вы не можете использовать importlib
).
Я не могу воспроизвести это поведение на Python 2.6.5. Какую версию вы используете? Вы уверены, что это полный код, который вы там разместили? –
Я использую Python 2.6.4. Две строки кода - это все, что я использую для воспроизведения. Я только что попытался с Python 2.4.3, я получаю те же результаты. –
Я получаю его на python 2.6.5 на linux2, построенном с g.c.c 4.4.3 – aaronasterling