¿Cómo localizar un módulo en particular en Python?

En este artículo, veremos cómo ubicar un módulo en particular en Python. Localizar un módulo significa encontrar el directorio desde el que se importa el módulo. Cuando importamos un módulo, el intérprete de Python busca el módulo de la siguiente manera:

  • Primero, busca el módulo en el directorio actual.
  • Si el módulo no se encuentra en el directorio actual, Python busca cada directorio en la variable de shell PYTHONPATH . PYTHONPATH es una variable de entorno que consta de una lista de directorios.
  • Si eso también falla, python verifica la lista de directorios dependientes de la instalación configurados en el momento en que se instaló Python.

sys.path contiene la lista del directorio actual, PYTHONPATH y el valor predeterminado dependiente de la instalación. Discutiremos cómo usar este y otros métodos para ubicar el módulo en este artículo. 

Método 1: Usar el módulo os 

Para un módulo de python puro, podemos ubicar su fuente por module_name.__file__. Esto devolverá la ubicación donde existe el archivo .py del módulo. Para obtener el directorio podemos usar el método os.path.dirname() en el módulo os . Por ejemplo, si queremos saber la ubicación del módulo ‘aleatorio’ usando este método, escribiremos lo siguiente en el archivo python

Python

# importing random module
import random
  
# importing the os module
import os
  
# storing the path of modules file 
# in variable file_path
file_path = random.__file__
  
# storing the directory in dir variable
dir = os.path.dirname(file_path)
  
# printing the directory
print(dir)

Producción:

C;\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib

Método 2: Usar sys.path

Para este método, usaremos el módulo sys . La variable sys.path del módulo sys contiene todos los directorios en los que se buscarán módulos en tiempo de ejecución. Entonces, al conocer estos directorios, podemos verificar manualmente dónde existe nuestro módulo particular. Para implementar esto, tenemos que escribir lo siguiente en Python Shell:

Python

# importing sys module
import sys
  
# importing sys.path
print(sys.path)

Esto devolverá la lista de todos los directorios en los que se buscará el módulo en tiempo de ejecución.

Producción:

[‘/inicio’, ‘/usr/lib/python2.7’, ‘/usr/lib/python2.7/plat-x86_64-linux-gnu’, ‘/usr/lib/python2.7/lib-tk’ , 

‘/usr/lib/python2.7/lib-old’, ‘/usr/lib/python2.7/lib-dynload’, ‘/usr/local/lib/python2.7/dist-packages’, 

‘/usr/lib/python2.7/dist-paquetes’]

Método 3: Usar ayuda (module_name)

En el shell de python, después de importar algunos módulos, podemos obtener información diversa sobre el módulo usando ayuda (nombre_del_módulo). Por ejemplo, si queremos saber la ubicación del módulo os usando este método, escribiremos lo siguiente en el shell de python

Python

# importing os module
import os
  
# printing help(os)
print(help(os))

Debajo de varias informaciones, encontraremos un encabezado con el nombre ARCHIVO debajo del cual estará presente la ubicación del módulo.

Producción:

….

/otra información diversa/

….

EXPEDIENTE

      c:\Usuarios\lenovo\appdata\local\programs\python\python39\lib\os.py

Método 4: Usar el módulo de inspección

También podemos usar el módulo de inspección en python para ubicar un módulo. Usaremos el método inspect.getfile() del módulo de inspección para obtener la ruta. Este método tomará el nombre del módulo como argumento y devolverá su ruta. Por ejemplo, si queremos encontrar el directorio del módulo os usando este método, escribiremos el siguiente código:

Python

# importing random module
import inspect
  
# importing the os module
import os
  
# printing the file path of os module
print(inspect.getfile(os))

Producción:

C:\Usuarios\Lenovo\AppData\Local\Programs\Python\Python39\lib\os.py

Publicación traducida automáticamente

Artículo escrito por yashgupta0524 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 *