1) Asegúrese de tener un archivo en blanco __init__.py
en subdir
.
2) Use una ruta completa; algo como esto:
import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), 'subdir'))
Editar: proporcionar más información para responder a preguntas hechas en un comentario.
As Nick Johnson demonstrates puede colocar esas tres líneas de código en un archivo llamado fix_path.py
. Luego, en su archivo main.py
, haga esto import fix_path
antes que todas las demás importaciones. Link to a tested application using this technique.
Y, sí, se requiere el archivo __init__.py
; por la documentation:
Al importar el paquete, Python búsquedas a través de los directorios en sys.path buscando el paquete subdirectorio.
Se requieren los archivos __init__.py
para hacer que Python trate los directorios como que contienen paquetes; esto se hace a para evitar directorios con un nombre común, como cadena, desde ocultando involuntariamente los módulos válidos que se producen más adelante en la ruta de búsqueda del módulo . En el caso más simple, __init__.py
puede ser solo un archivo vacío, pero también puede ejecutar el código de inicialización para el paquete o establecer la variable __all__
, que se describe más adelante.
$ 10 dice que tenía un errante '.pyc' archivo si el error "se fijó". –