2009-01-29 12 views
10

Tengo un paquete creado de esta manera:Python: Problema con módulos locales sombreado módulos globales

packagename/ 
    __init__.py 
    numbers.py 
    tools.py 
    ...other stuff 

Ahora dentro tools.py, Estoy tratando de importar el módulo de la biblioteca estándar fractions. Sin embargo, el módulo fractions sí importa el módulo numbers, que se supone que es el de la biblioteca estándar.

El problema es que se trata de importar los módulos de numbersmi paquete lugar (es decir, mi numbers.py se cubrían el módulo de stdlib numbers), y luego se queja de que, en lugar de importar el módulo stdlib.

Mi pregunta es, ¿hay alguna solución para poder mantener la estructura actual de mi paquete, o es la única solución para cambiar el nombre de mi propio módulo ofensivo (numbers.py)?

+0

Lo sentimos, debe haber leído TFQ más a fondo. De todos modos, estoy tratando de reproducir el problema ahora, pero no puedo. ¿Cómo está ejecutando el código cuando ocurre el error? Solo puedo reproducirlo cuando estoy ejecutando código desde dentro del paquete. –

Respuesta

4

Intento evitar sombrear la biblioteca estándar. ¿Qué le parece cambiar el nombre de su módulo a "_numbers.py"?

Y, por supuesto, aún se podía hacer:

import _numbers as numbers 
Cuestiones relacionadas