octubre 28, 2020

Pasos para construir un primer paquete de Python

A continuación, describiremos los pasos para construir un primer paquete de Python, los cuales siguen una estructura muy básica.

Hay, en total, cuatro archivos Python, cada uno de los cuales tiene un método único. Desde un enfoque simple, lo veríamos de la siguiente forma:

base-verysimplemodule  –> Base

└── verysimplemodule   –> Actual Module

    ├── extras

    │   ├── multiply.py

    │   ├── divide.py

    ├── add.py

    ├── subtract.py

Hay una carpeta llamada verysimplemodule que, a su vez, tiene dos archivos Python add.pyy subtract.py. También la carpeta: extras (que contiene multiply.pyy divide.py). Esta carpeta formará la base de nuestro módulo Python.

Archivos __init__s

Una constante en cada paquete de Python es un archivo __init__.py. Este archivo le dirá a Python que trate los directorios como módulos (o submódulos).

Además, contendrá los nombres de los métodos en todos los archivos de Python que están en su directorio inmediato.

Un archivo típico __init__.py tiene el siguiente formato:

from file import method

# ‘method’ is a function that is present in a file called ‘file.py’

Al crear paquetes en Python, se debe agregar un archivo __init__.py en cada subdirectorio de su paquete. Estos subdirectorios son los submódulos del paquete.

En nuestro caso, agregaremos nuestros archivos __init__.py al directorio del ‘módulo real’ verysimplemodule, de la siguiente forma:

from add import add

from subtract import subtract

Haremos lo mismo con la carpeta extras:

from multiply import multiply

from divide import divide

Configurar setup.py

Dentro de la carpeta base-verysimplemodule (y en el mismo directorio que nuestro módulo verysimplemodule), necesitamos agregar un archivo setup.py. Este archivo es esencial si tiene la intención de construir el módulo en cuestión.

 Nota: hay que asignar un nombre al archivo setup.py. Este archivo no tiene un nombre específico como nuestro archivo __init__.py. una buena práctica es nombrar: setup.py.

El archivo setup.py contendrá información sobre el paquete, específicamente el nombre del paquete, su versión, dependencias de la plataforma y mucho más.

Para nuestros propósitos, no vamos a requerir metainformación avanzada, por lo que el siguiente código debería adaptarse a la mayoría de los paquetes que cree:

from setuptools import setup, find_packages

VERSION = ‘0.0.1’

DESCRIPTION = ‘My first Python package’

LONG_DESCRIPTION = ‘My first Python package with a slightly longer description’

# Setting up

setup(

       # the name must match the folder name ‘verysimplemodule’

        name=»verysimplemodule»,

        version=VERSION,

        author=»Jason Dsouza»,

        author_email=»<youremail@email.com>»,

        description=DESCRIPTION,

        long_description=LONG_DESCRIPTION,

        packages=find_packages(),

        install_requires=[], # add any additional packages that

        # needs to be installed along with your package. Eg: ‘caer’

        keywords=[‘python’, ‘first package’],

        classifiers= [

            «Development Status :: 3 – Alpha»,

            «Intended Audience :: Education»,

            «Programming Language :: Python :: 2»,

            «Programming Language :: Python :: 3»,

            «Operating System :: MacOS :: MacOS X»,

            «Operating System :: Microsoft :: Windows»,

        ]

)

Una vez hecho esto, tendremos que ejecutar el siguiente comando en el mismo directorio que base-verysimplemodule:

python setup.py sdist bdist_wheel

Esto creará los paquetes necesarios que Python requerirá. Los comandos sdisty bdist_whe crearán una distribución de código fuente y una rueda que puede cargar más tarde para PyPi.

Hacia PyPi

PyPi es el repositorio oficial de Python donde se almacenan los paquetes de Python. Se puede pensar en él como Github para paquetes de Python.

Para que el paquete de Python esté disponible se deberá tener una cuenta con PyPi .

Una vez hecho esto, se podrá cargar el paquete en PyPi, se cargará la distribución de fuentes y la rueda que se construyó cuando ejecutamos python setup.py.

Pero antes de hacer eso, se debe instalar twinesi. Es tan simple como pip install twine.

Cómo subir su paquete a PyPi

Suponiendo que se haya instalado twine, hay que continuar y ejecutar:

twine upload dist/*

Este comando cargará el contenido de la carpeta dist que se generó automáticamente cuando ejecutamos python setup.py. Recibirá un mensaje que pedirá su nombre de usuario y contraseña de PyPi, por lo que hay que escribirlos.

Ahora, es posible que obtenga un error en las líneas de que el repositorio ya existe.

Esto generalmente se debe a que hay un conflicto de nombres entre el nombre de su paquete y un paquete que ya existe, por lo que hay que cambiar el nombre de su paquete considerando que alguien más ya ha tomado ese nombre.

Para instalar pip al módulo, hay que encender una terminal y ejecutar:

pip install <package_name>

# in our case, this is

pip install verysimplemodule

Observar cómo Python instala cuidadosamente el paquete a partir de los binarios que se generaron anteriormente.

Abra un shell interactivo de Python e importar su paquete:

>> import verysimplemodule as vsm

>> vsm.add(2,5)

7

>> vsm.subtract(5,4)

1

Para acceder a los métodos de división y multiplicación hay que ejecutarlo desde una carpeta llamada extras:

>> import verysimplemodule as vsm

>> vsm.extras.divide(4,2)

2

>> vsm.extras.multiple(5,3)

15

Ahora tenemos el primer paquete de Python. Aunque es muy simple, el paquete ahora está disponible para que lo descargue cualquier persona (siempre que tenga Python, por supuesto).

Prueba PyPi

El paquete que usamos fue un módulo simple: operaciones matemáticas básicas de suma, resta, multiplicación y división. No tiene sentido subirlos directamente a PyPi, especialmente porque estás probando esto por primera vez.

Por suerte para nosotros, existe Test PyPi, una instancia separada de PyPi donde se puede probar y experimentar con el paquete (deberá registrarse para obtener una cuenta separada en la plataforma).

El proceso para cargar en Test PyPi es prácticamente el mismo con algunos cambios menores.

# The following command will upload the package to Test PyPi

# You will be asked to provide your Test PyPi credentials

twine upload –repository testpypi dist/*

Para descargar proyectos de Test PyPi:

pip install –index-url «https://test.pypi.org/simple/<package_name>»

Metainformación avanzada

La metainformación que usamos en el archivo setup.py fue básica, se puede agregar información adicional, como correo electrónico del autor, información de licencia y una gran cantidad de otros datos.

Leíste: Pasos para construir un primer paquete de Python, te recomendamos: ¿Cómo aprender Python de manera rápida?

Te invitamos a que nos sigas en nuestras redes sociales: Facebook, Twitter, Instagram y Youtube con el perfil: @tortugacode