грешка при импортиране на модул на python

Използвам macports за инсталиране на различни модули. Като цяло това работи добре, но по-долу е грешка, която получавам и която не разрешавам лесно:

$ python
Python 2.6.6 (r266:84292, Feb 12 2011, 16:57:53) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import dns
>>> import opcode
>>> from dns import resolver
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/dns/resolver.py", line 26, in <module>
    import dns.message
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/dns/message.py", line 28, in <module>
    import dns.opcode
ImportError: No module named opcode

Възможно ли е това да е проблем с пътя?

>>> import sys
>>> sys.path
['', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages', '/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info']

$ cat /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/dns/init.py [изрязани коментари] # init .py за DNS клас.

__version__ = '2.3.3'

import Type,Opcode,Status,Class
from Base import DnsRequest, DNSError
from Lib import DnsResult
from Base import *
from Lib import *
Error=DNSError
from lazy import *
Request = DnsRequest
Result = DnsResult

Благодаря предварително.


person galaxywatcher    schedule 05.03.2011    source източник
comment
from dns import resolver не работи? Можете ли да публикувате съдържанието на __init__.py в /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/dns/?   -  person Herberth Amaral    schedule 05.03.2011


Отговори (3)


Защото трябва да направите:

from dns import resolver

Това не работи:

import datetime.datetime

Но това прави:

from datetime import datetime

Ако импортирате пакет, който е част от друг пакет, трябва да използвате синтаксиса "от".

person tkone    schedule 05.03.2011
comment
пробвал ли си импортиране на dns, resolver = dns.resolver? Вече сте импортирали dns пакета. - person tkone; 06.03.2011
comment
Опитах това сега и все още получавам грешка: AttributeError: 'module' object has no attribute 'resolver' - person galaxywatcher; 06.03.2011
comment
Мога да импортирам други модули от dns без проблем: tokenizer, reversename, ipv6 и т.н. Само резолверът генерира грешка. - person galaxywatcher; 06.03.2011
comment
Добре. Намерих някои други пакети от dns, които генерират грешка: update, win32dns, e164, (току-що забелязах, че Opcode на пакета не е с малки букви - чудя се дали това има нещо общо с това), съобщение, не съм ги тествал всички. - person galaxywatcher; 06.03.2011

Деинсталирах py26-dnspython и го инсталирах отново. Проблема решен. Fink от freenode направи предложението. Благодаря.

person galaxywatcher    schedule 06.03.2011

Използвам Python 3.7 и инсталирах pubdns. Това разреши проблема ми. Сблъсках се с изключителни трудности при използването на py3dns, pyDNS (няма да се инсталира), dnspython и много други

person L3arn3D    schedule 25.07.2019