Primero que nada: lo siento, sé que ha habido muchas preguntas sobre importaciones relativas, pero no encontré una solución. Si es posible me gustaría usar la siguiente estructura de directorios:empaquetado de pitón para importaciones relativas
myClass/
__init__.py
test/
demo.py
benchmark.py
specs.py
src/
__init__.py
myClass.py
Ahora mis preguntas son:
¿Cómo los archivos de prueba desde dentro del paquete importa correctamente myClass.py?
¿Cómo importaría el paquete desde el exterior, suponiendo que tome myClass como submódulo en libs/myClass o incluya/myClass?
Hasta ahora no he podido encontrar una solución elegante para esto. Por lo que entiendo Guido's Decision debería ser posible hacer from ..src import myClass
pero esto va a error:
ValueError: Attempted relative import in non-package
que se ve, ya que no trata a myClass como paquetes. Reading the docs:
The __init__.py files are required to make Python treat the directories as containing packages;
Parece que me falta algo que especifica dónde los guiones del paquete son, debo utilizar .pth?
@Brent Newey, sí, tiene razón, las importaciones relativas parecen ser un tema continuo y después de leer bastantes respuestas todavía sentía la necesidad de describir específicamente mi situación. Después de mostrar esto q, en el canal IRC#python, unas cuantas personas recomendaron usar una estructura de directorios plana: "Mucha gente se resiste a la forma en que Python quiere usar directorios y archivos para obtener información semántica del espacio de nombres. Lo mejor es ceder y hacer lo que Python quiere ". http://jcalderone.livejournal.com/39794.html – eerne
¿Alguien podría proporcionar un enlace a algunos paquetes del mundo real, con un diseño de directorio ejemplar o siguiendo algunas convenciones? (idealmente en github) – eerne
¿Hay '__init __. py' en el directorio' test'? 'ValueError: Intento de importación relativa en non-package' podría estar relacionado con él. – jfs