top from beyond attempted another python path directory parent sys

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)