En este artículo, discutiremos formas de importar archivos desde el directorio hermano en Python. Primero, cree dos carpetas en una carpeta raíz y en cada carpeta cree un archivo python. A continuación se muestra el árbol del diccionario:
Directory Tree: root : | |__SiblingA: | \__A.py | |__SiblingB: | \__B.py
En B.py crearemos una función simple y en A.py importaremos el módulo hermano y llamaremos a la función creada en B.py. Para importar el módulo hermano en A.py, debemos especificar el directorio principal en A.py, lo que se puede hacer usando el método path.append() en el módulo sys . Pasar ‘..’ en el método append() agregará la ruta del directorio principal en A.py
Código para A.py:
Python3
# import requi9red module import sys # append the path of the # parent directory sys.path.append("..") # import method from sibling # module from SiblingB.B import methodB # call method s = methodB() print(s)
Código para B.py:
Python3
# defining method to import # in A.py which returns a string def methodB(): return "\n\nThis is methodB from SiblingB"
Salida después de la ejecución de A.py:
Se ejecuta A.py y se llama al método B().
Nota: No podemos importar directamente el método B de A.py como «desde ..SiblingB.B import methodB», esto generará un error que indica que ImportError: intentó una importación relativa sin un paquete principal conocido. Esto se debe a que Python no considera el directorio de trabajo actual como un paquete si __init__.py no está definido en él.
Otra forma similar de realizar la misma tarea es crear los directorios hermanos como un paquete colocando el archivo __init__.py en las carpetas y luego importándolo desde el directorio hermano. __init__.py se puede hacer para importar los métodos requeridos a los otros módulos. A continuación se muestra el árbol del diccionario:
Directory Tree: root : | |__SiblingA: | \__A.py | |__SiblingB: | \_ __init__.py | \__B.py |
Código para A.py:
Python3
# import requi9red module import sys # append the path of the # parent directory sys.path.append("..") # import method from sibling # module from SiblingB import methodB # call method s = methodB() print(s)
Código para __init__.py:
Python3
# from .fileName import methodName from .B import methodB
Código para B.py:
Python3
# defining method to import in # A.py which returns this string def methodB(): return "\n\nThis is methodB from SiblingB"
Salida después de la ejecución de A.py:
NOTA: Una vez que se coloca __init__.py dentro de una carpeta, esta carpeta ahora actúa como un paquete en python.
Publicación traducida automáticamente
Artículo escrito por deveshkumarsharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA