Los paquetes de Python son colecciones de módulos (código reutilizable) que amplían y mejoran la funcionalidad del núcleo del lenguaje Python. Los desarrolladores de Python contribuyen al repositorio oficial Python Package Index (PyPI), poniendo sus paquetes a disposición de la comunidad de Python bajo términos de licencia de código abierto. La Autoridad de Empaquetado de Python (PyPA) gestiona el repositorio y mantiene un conjunto estándar de herramientas para construir, distribuir e instalar paquetes de Python.

En los superordenadores de investigación de la Universidad de Indiana, muchos paquetes de terceros ya están instalados para complementar las construcciones de Python de uso común. Si tiene una necesidad única de un paquete Python de terceros que no está ya instalado, puede utilizar pip o setup.py para instalar el paquete en su directorio principal. Si sabe que varios investigadores están interesados en utilizar un paquete de Python que aún no está instalado, puede solicitar que se instale como un paquete de sitio para todo el sistema.

En esta página:

  • Instalar paquetes de Python para uso personal
    • Configurar su entorno de usuario
    • Instalar un paquete usando pip
    • Instalar un paquete usando su setup.py script
  • Entender el orden de búsqueda de módulos

Instalar paquetes Python para uso personal

Configurar su entorno de usuario

Para instalar paquetes Python, debes tener Python añadido a tu entorno de usuario. En Carbonate, Python se añade a su entorno de usuario por defecto. En Big Red 3, o si previamente ha eliminado Python, utilice las siguientes instrucciones para añadir Python a su entorno de usuario:

  1. Compruebe qué módulos están cargados actualmente; en la línea de comandos, introduzca:
     module list
  2. Si Python no está entre la lista de módulos cargados actualmente, utilice el comando module load para añadirlo; por ejemplo:
    • Para añadir la versión por defecto, en la línea de comandos, introduzca:
       module load python
    • Para añadir una versión no predeterminada:
      1. Comprueba qué versiones están disponibles; en la línea de comandos, introduce:
         module avail python
      2. Cargar la versión preferida; en la línea de comandos, introduzca (sustituya version_number por el número de la versión preferida):
         module load python/version_number
  3. Si Python aparece entre los módulos cargados actualmente, pero usted prefiere o necesita usar otra versión, debe eliminar el módulo cargado actualmente antes de cargar la otra versión. Para hacer esto con un comando, utilice module switch; por ejemplo, en la línea de comandos, introduzca (sustituya current_version por el número de versión del módulo python cargado actualmente y new_version por el número de versión preferido)
     module switch python/current_version python/new_version

Para realizar cambios permanentes en su entorno, edite su archivo~/.modules. Para obtener más información, consulte Utilizar un archivo .modules en su directorio principal para guardar su entorno de usuario en un superordenador de investigación de IU.

Para obtener más información sobre el uso de Modules para configurar su entorno de usuario, consulte Utilizar Modules para gestionar su entorno de software en los superordenadores de investigación de IU.

Instalar un paquete usando pip

La herramienta de gestión de paquetes pip, una de las herramientas estándar mantenidas por la Python Package Authority (PyPA), es la herramienta recomendada para instalar paquetes desde el repositorio Python Package Index (PyPI).

Para instalar un paquete desde el repositorio de PyPI (por ejemplo, foo), utilice el comando pip install con la bandera --user; por ejemplo:

La opción --user indica a pip que descargue y desempaquete la distribución de la fuente para su paquete (por ejemplo, foo) en el directorio del usuario site-packages para el Python en ejecución; por ejemplo:

 ~/.local/lib/python3.6/site-packages/foo

Python busca automáticamente los módulos en este directorio, por lo que no es necesario anteponer esta ruta a la variable de entorno PYTHONPATH.

Si omite la opción --user, pipintentará instalar su paquete en el directorio global site-packages (donde no tiene los permisos necesarios); como resultado, la instalación fallará.

Para más información sobre el uso de pip, consulte la página de instalación de pip en la Guía del usuario de pip.

Instalar un paquete utilizando su script setup.py script

Para instalar un paquete de Python desde una fuente distinta al repositorio de PyPI, puede descargar y desempaquetar la distribución fuente usted mismo, y luego usar su script setup.py para instalar el paquete en el directorio del usuario site-packages:

La opción --user indica a setup.py que instale el paquete (por ejemplo, foo) en el directorio de usuario site-packages para el Python que se está ejecutando; por ejemplo:

 ~/.local/lib/pythonX.Y/site-packages/foo

Python busca automáticamente los módulos en este directorio, por lo que no es necesario anteponer esta ruta a la variable de entorno PYTHONPATH.

Si omite la opción --user, setup.pyintentará instalar el paquete en el directorio global site-packages (donde no tiene los permisos necesarios); como resultado, la instalación fallará.

Alternativamente, puede utilizar la opción --home o --prefix para instalar su paquete en una ubicación diferente (donde tiene los permisos necesarios); por ejemplo, para instalar su paquete en un subdirectorio (por ejemplo, python-pkgs):

Nota:
Si instala su paquete en una ubicación distinta al directorio del usuario site-packages, deberá anteponer la ruta de ese directorio a su variable de entorno PYTHONPATH. Para más información sobre PYTHONPATH, vea PYTHONPATH y la orden python import más abajo.

Para más información sobre el uso de setup.py para instalar paquetes, vea Instalación de módulos de Python (versión heredada).

Entender el orden de búsqueda de los módulos

Saber cómo responde el intérprete de Python a las sentencias import puede ayudarle a determinar por qué no se carga un módulo o paquete en particular, o por qué se carga una versión inesperada de un paquete, aunque la versión correcta esté instalada y la ruta de acceso a su ubicación aparezca en su variable de entorno PYTHONPATH.

Cuando Python se lanza, busca las rutas encontradas en sys.path, una lista de directorios que determina la ruta de búsqueda de módulos del intérprete. La variable sys.path se inicializa desde las siguientes ubicaciones, en este orden:

  1. El directorio que contiene el script utilizado para invocar al intérprete de Python (si el intérprete se invoca de forma interactiva o el script se lee desde la entrada estándar, este primer elemento, path, sigue siendo una cadena vacía, que dirige a Python a buscar primero los módulos en el directorio de trabajo actual)
  2. Los directorios listados en PYTHONPATH
  3. El directorio site-packages específico de la versión para la instalación de Python en ejecución; por ejemplo:
     <sys.prefix>/lib/pythonX.Y/site-packages

    En este ejemplo, <sys.prefix> es la ruta de acceso a la instalación de Python en ejecución; X.Y es el número de versión (por ejemplo, 3.8) de la instalación de Python en ejecución.

Por defecto, Python también importa el módulo site.py en la inicialización, que añade rutas específicas del sitio a la ruta de búsqueda del módulo (sys.path), incluyendo la ruta a su directorio de usuario site-packages dentro de su directorio personal; por ejemplo (X.Y será el número de versión de la instalación de Python en ejecución):

 ~/.local/lib/pythonX.Y/site-packages

Como site.py añade rutas a sys.path, las explora en busca de archivos de configuración de rutas (.pth), que contienen directorios adicionales que se añaden a sys.path. Si un directorio contiene varios archivos .pth, site.py los procesa en orden alfabético.

Sin embargo, algunos archivos .pth contienen comandos incrustados que insertan entradas de directorio al principio de la ruta de búsqueda del módulo (por delante de la ruta de la biblioteca estándar). Como resultado, un módulo de uno de los directorios insertados se cargará en lugar del módulo del mismo nombre del directorio de la biblioteca estándar. Esto puede ser un comportamiento indeseado y confuso a menos que se pretenda tal reemplazo.

Nota:

Si sus peticiones de import se ven constantemente interrumpidas por los archivos site.py y .pth, pruebe a invocar el intérprete de Python con la -S («S» mayúscula):

 python -S

Esto desactiva la importación automática de site.py y, como resultado, evita que manipule sys.path. Sin embargo, también impide que site.py añada su directorio de usuario site-packages a sys.path. Para importar site.py sin añadir su directorio de usuario site-packages a sys.path, invoque a Python con la opción -s («s» minúscula):

 python -s

Para ver qué directorios explora Python cuando emite comandos import, en la línea de comandos, introduzca:

 python -c "import sys; print ('\n'.join(sys.path))"

Alternativamente, lanza Python en modo interactivo, y luego invoca los mismos comandos en este orden (>>> es el prompt principal de Python):

 >>>import sys >>>print ('\n'.join(sys.path))
Nota:
La variable sys.path es sólo una lista editable de cadenas que puedes editar como cualquier otra lista de Python. Evite editar el primer elemento de la lista (path), porque muchos paquetes asumen que se refiere al directorio que contiene el script utilizado para invocar el intérprete de Python.

Documentos relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada.