Python: importar desde el directorio principal

En este artículo, aprenderemos cómo importar un módulo desde el directorio principal. Desde Python 3.3, no se permite hacer referencia o importar un módulo en el directorio principal. En el siguiente ejemplo, puede entender esto claramente.

estructura del directorio 

En el directorio principal, tenemos un subdirectorio, el archivo geeks.py y en el subdirectorio, tenemos un archivo python llamado temp.py. Ahora intentemos si podemos importar el módulo geeks en el directorio principal desde el archivo temp.py en el subdirectorio.

geeks.py (módulo en el directorio principal)

Python3

def geek_method():
    print("This method in geeks module.......bye")

temp.py (archivo python en el subdirectorio)

Python3

# importing the module in
# parent directory
from parentdirectory import geeks
  
# calling the func1() method 
# from geeks module
geeks.geek_method()

Como hemos discutido anteriormente, no es posible importar un módulo desde el directorio principal, por lo que esto genera un error como este.

Rastreo (llamadas recientes más última):

 Archivo “C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py”, línea 2, en <módulo>

   de parentdirectory importar geeks

ModuleNotFoundError: ningún módulo llamado ‘directorio principal’

Ahora aprendamos cómo importar un módulo desde el directorio principal:

Para importar un módulo, el directorio que contiene ese módulo debe estar presente en PYTHONPATH. Es una variable de entorno que contiene la lista de paquetes que Python cargará. La lista de paquetes presentes en PYTHONPATH también está presente en sys.path, por lo que agregará la ruta del directorio principal a sys.path.

Para nuestro trabajo, utilizamos tres enfoques diferentes que se explican a continuación con la ayuda de ejemplos.

Método 1: aquí usaremos el módulo sys y estableceremos la ruta directamente al módulo requerido.

Agregue el directorio principal a sys.path usando el método append() . Es una función incorporada del módulo sys que se puede usar con una variable de ruta para agregar una ruta específica para que los intérpretes busquen. El siguiente ejemplo muestra cómo se puede hacer esto.

Código:

Python3

import sys
  
# setting path
sys.path.append('../parentdirectory')
  
# importing
from parentdirectory.geeks import geek_method
  
# using
geek_method()

Producción:

This method in geeks module.......bye

Método 2: Aquí usaremos el módulo sys así como el módulo de ruta para obtener el directorio y configurar la ruta directamente al módulo requerido.

Sintaxis: os.path.abspath(ruta)

Parámetro:
Ruta: un objeto similar a una ruta que representa una ruta del sistema de archivos.

Tipo de devolución: este método devuelve una versión normalizada de la ruta del nombre de la ruta.

En primer lugar, obtendremos el nombre del directorio donde el archivo temp.py se encuentra actualmente usando path.path(__file__).abspath(), en segundo lugar, agregaremos el directorio a sys.path .append para verificar, usaremos su método.

Código:

Python3

import path
import sys
  
# directory reach
directory = path.path(__file__).abspath()
  
# setting path
sys.path.append(directory.parent.parent)
  
# importing
from parentdirectory.geeks import geek_method
  
# using
geek_method()

Producción:

 This method in geeks module.......bye

Método 3: aquí usaremos el módulo sys y el módulo os para obtener el directorio (actual y principal) y estableceremos la ruta directamente al módulo requerido.

Sintaxis: os.path.dirname(ruta)

Parámetro:
ruta : un objeto similar a una ruta que representa una ruta del sistema de archivos.

Tipo de devolución: este método devuelve un valor de string que representa el nombre del directorio de la ruta especificada.

En primer lugar, obtendremos el directorio actual usando os.path.dirname(os.path.realpath(__file__)), en segundo lugar, obtendremos el directorio principal usando os.path.dirname(), finalmente, agregue el directorio principal directorio al sys.path para verificar, usaremos su método.

Código:

Python3

import sys
import os
  
# getting the name of the directory
# where the this file is present.
current = os.path.dirname(os.path.realpath(__file__))
  
# Getting the parent directory name
# where the current directory is present.
parent = os.path.dirname(current)
  
# adding the parent directory to 
# the sys.path.
sys.path.append(parent)
  
# now we can import the module in the parent
# directory.
import geeks
  
  
geeks.geek_method()

Producción:

Publicación traducida automáticamente

Artículo escrito por pulamolusaimohan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *