Ho problemi con i miei moduli che sovrascrivono quelli in Python (in particolare il modulo di registrazione). Ecco il mio layout del progetto:Un altro problema di importazione assoluta
run.py
package/
__init__.py
logging/
__init__.py
...
run.py
from package import main
main()
pacchetto/__ init__.py
from __future__ import absolute_import
import logging
import logging.config
def main():
logging.config.fileConfig(...)
pacchetto/logging/__ init__.py
class Logging(object):
pass
Come sta ora, il codice sopra funziona. Non appena si tenta di importare la classe di registrazione da package.logging in questo modo:
from __future__ import absolute_import
import logging
import logging.config
from package.logging import Logging
def main():
logging.config.fileConfig(...)
ottengo un errore:
AttributeError: 'module' object has no attribute 'config'
Ho letto le note di rilascio PEP 328 e ho trovato le importazioni assoluti di essere piuttosto semplice. Sfortunatamente non sono stato in grado di capirlo.
Cosa mi manca qui?
utilizzare l'esempio sembra funzionare. Tuttavia, ora devo fare riferimento alla classe Logging come logging.Logging. Ulteriori test rivelano che "da .logging import Logging" non sembra funzionare come suggerisce PEP 328. Ancora non capisco perché "da package.logging import Logging" non funzioni. Non è un'importazione assoluta? – kierse
quale versione di python stai usando? Se è una versione precedente (diciamo 2.4) le importazioni relative potrebbero non funzionare o, almeno, non funzionare come previsto. – Soviut
Sto eseguendo Python 2.6.2 – kierse