beyond - python import module from path
Importar desde el directorio de hermanos (3)
Tengo una clase de Python llamada "ClassA" y otra clase de Python que se supone que importa ClassA que es "ClassB". La estructura del directorio es la siguiente:
MainDir
../Dir
..../DirA/ClassA
..../DirB/ClassB
¿Cómo usaría sys.path
para que ClassB pueda usar ClassA?
Puede usar la importación relativa (ejemplo de enlace, módulo actual - ABC
):
from . import D # Imports A.B.D
from .. import E # Imports A.E
from ..F import G # Imports A.F.G
Realmente deberías estar utilizando paquetes. Luego MainDir se coloca en un punto del sistema de archivos en sys.path (por ejemplo ... / site-packages), luego puede decir en ClassB:
from MainDir.Dir.DirA import ClassA # which is actually a module
Solo tiene que colocar los archivos con el nombre __init__.py
en cada directorio para que sea una jerarquía de paquetes.
como respuesta literal a la pregunta '' Importar Python desde el directorio principal '':
para importar ''mymodule'' que se encuentra en el directorio principal de su módulo actual:
import os
parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.sys.path.insert(0,parentdir)
import mymodule
Editar Desafortunadamente, el atributo __file__
no siempre se establece. Una forma más segura de obtener la dirección de los padres es a través del módulo de inspección:
import inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)