ImportError: нет модуля с именем dns.exception
Я пытаюсь использовать dnspython в своем коде, но когда он попадает в оператор импорта, я получаю следующую ошибку:
>>> import DNS.resolver
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\python27\lib\site-packages\DNS\resolver.py", line 31, in <module>
import dns.exception
ImportError: No module named dns.exception
Я попытался установить с помощью pip, easy_install и вручную из репозитория git, но ничего не помогло. Есть идеи??
Код:
import DNS.resolver
if __name__ == "__main__":
domain = 'hotmail.com'
for x in dns.resolver.query(domain, 'MX'):
print x.to_text()
3 ответа
Еще одно, что вы можете сделать, чтобы исправить проблемы с этим пакетом, - это снова установить python-dnspython с помощью Synaptic. (Нет ли предыдущих проблем с двуличностью)
Иногда, если вы попытаетесь установить этот пакет с помощью pip, могут возникнуть такие проблемы:
Команда python setup.py egg_info завершилась ошибкой с кодом ошибки 1 в / tmp / pip_build_root / dnspython Сохранение журнала отладки для сбоя в /root/.pip/pip.log
Использование Synaptic очищает старые файлы и устанавливает новые из этого пакета. Я знаю, что эта проблема решена, но я хотел бы добавить больше информации об этом:)
Во-первых, ваш код должен быть: import dns.resolver
,
Кажется, есть проблема установки dnspython с помощью pip, вы должны клонировать репозиторий dnspython с помощью git и запустить файл setup.py следующим образом:
git clone https://github.com/rthalley/dnspython
cd dnspython\
python setup.py install
Если на вашем компьютере не установлен git, вы можете просто загрузить репозиторий вручную.
Это потому, что имена пакетов и модулей строчные (см. PEP 8). Это работает просто отлично:
import dns.resolver
import dns.exception
Вы также должны быть осторожны, чтобы ни одно из ваших имен файлов *.py не конфликтовало с пакетом dns. Ваш *.py файл не должен называться dns.py. Обратите также внимание на файлы *.pyc.