¿Cómo construir un paquete de Python?

En este artículo, aprenderemos cómo desarrollar el paquete en Python. Los paquetes no son más que una colección de programas diseñados para realizar un determinado conjunto de tareas. Los paquetes son de dos tipos, a saber

  • Paquetes incorporados como colección, fecha y hora, sqlite, etc.
  • Paquetes externos como matraz, django, tensorflow, etc.

Creando un paquete

Primero, debemos pensar en una forma de estructurar nuestro código, para que otros puedan acceder a las funcionalidades de nuestro código. En Python, para hacer un paquete, necesitamos agregar un __init__.py al directorio. Aquí, vamos a hacer un paquete llamado test_package .

  • Escribamos el __init__.py

Python3

from collections import Counter
  
def count_in_list(l, word):
  c = Counter(l)
  return c[word]
  • Ahora, cree un directorio llamado test_package y en él guarde el archivo __init__.py . Eso es todo, nuestro paquete está listo. Todo nuestro paquete cuenta el número de ocurrencias de una palabra en una lista. Ahora, para usar nuestro paquete, cree un archivo run.py fuera del directorio test_package . Dentro de run.py simplemente importa el paquete recién creado y usa la función count_in_list . Podemos escribir el código como se muestra a continuación.

Python3

from test_package import count_in_list
  
l = ["gfg", "dsa", "gfg"]
count = count_in_list(l, "gfg")
print(count)
  • Eso es todo. Acabamos de crear nuestro primer paquete. Nuestra estructura de directorios debería verse así
package-folder
├── run.py
└── test_package
    └── __init__.py

1 directory, 2 files

 Para probarlo, simplemente escriba python3 run.py. Y nuestra salida debe ser la siguiente:

De esta manera, podemos crear muchos programas complejos y usarlos en otros códigos.

Subiendo nuestro paquete

Ahora, veamos cómo podemos preparar nuestro paquete para implementarlo en PyPI . Necesitamos algunos archivos adicionales en nuestra carpeta de paquetes, como README.MD , LICENSE y setup.py . Nuestro código debe estar estructurado de la siguiente manera.

package-folder
├── LICENSE
├── README.md
├── setup.py
└── test_package
    └── __init__.py

1 directory, 4 files

Asegúrese de eliminar el run.py creado anteriormente , estaba diseñado solo para pruebas manuales. Para la LICENCIA, recomendamos ir con la LICENCIA MIT, ya que ofrece la mayor flexibilidad. Podemos leer sobre varios tipos de licencias en línea.

A continuación, cree el archivo README.md. Esencialmente contendría una descripción completa del paquete. Si somos nuevos en la escritura de estilo Markdown, recomendamos leer este artículo . Una vez que tengamos listo el archivo README.md, debemos escribir el archivo setup.py . Esta es la parte más importante.

Python3

import setuptools
  
with open("README.md", "r") as fh:
    description = fh.read()
  
setuptools.setup(
    name="test-package",
    version="0.0.1",
    author="GeeksforGeeks",
    author_email="contact@gfg.com",
    packages=["test_package"],
    description="A sample test package",
    long_description=description,
    long_description_content_type="text/markdown",
    url="https://github.com/gituser/test-tackage",
    license='MIT',
    python_requires='>=3.8',
    install_requires=[]
)

En el código anterior, debe cambiar el

  • autor con tu nombre
  • author_email  con tu correo electrónico
  • url con su URL de GitHub del paquete

Nuestro paquete ya está listo.

Registrar nuestro paquete a PyPI

Ahora que desarrollamos nuestro paquete de python, debemos registrarlo en PyPI.

1. Subir a GitHub

Cree un nuevo repositorio de GitHub y envíe todo nuestro código allí. Si no sabe cómo insertar código en un repositorio de GitHub, puede dirigirse y leer este artículo . Además, no olvide actualizar nuestra URL en setup.py con la URL del repositorio de GitHub recién creada. Nuestro repositorio debe ser de acceso público.

2. Crea una cuenta en PyPI

Vamos a publicar el paquete en PyPI, necesitamos una cuenta. Para hacer eso, simplemente visite PyPI y cree su cuenta.

3. Generación de distribuciones

Se necesitan archivos de distribución para alojarlo como un paquete. Para generar estos paquetes, necesitamos instalar dos paquetes adicionales.

pip3 install setuptools wheel

Ahora que los instalamos, ejecute el siguiente comando para generar archivos:

python3 setup.py sdist bdist_wheel

Generará carpetas build , dist , test_package.egg-info . Ahora su estructura de directorios debería verse así.

package-folder
├── build
│   ├── bdist.linux-x86_64
│   └── lib
│       └── test_package
│           └── __init__.py
├── dist
│   ├── test_package-0.0.1-py3-none-any.whl
│   └── test-package-0.0.1.tar.gz
├── LICENSE
├── README.md
├── setup.py
├── test_package
│   └── __init__.py
└── test_package.egg-info
    ├── dependency_links.txt
    ├── PKG-INFO
    ├── SOURCES.txt
    └── top_level.txt

7 directories, 11 files

4. Implementar

Para subir a PyPI necesitamos tener instalado el paquete twine.

pip3 install twine

Ahora, cargue el paquete con la versión adecuada definida en el archivo setup.py . Para hacerlo, ejecute el siguiente comando

twine upload --repository pypi dist/*

Eso fue todo sobre el desarrollo y la implementación de paquetes en python.

Usando nuestro paquete

Una vez que se desarrolla el paquete, deberíamos poder usarlo, ¿verdad? Después de todo, fue desarrollado para reutilizar la misma lógica en diferentes bases de código. Cree un directorio completamente nuevo y cree un entorno virtual dentro de él. Para ello, simplemente escriba

python3 -m venv env
source env/bin/activate

Ahora, instale su paquete recién implementado en el entorno virtual. Necesitas usar pip para poder instalarlo.

pip install test-package

Ahora, veamos cómo podemos usar este paquete en nuestro código. La idea es sencilla. Esto es después de todo un paquete, ¿verdad? Entonces, todo lo que tenemos que hacer es importarlo como un paquete.

from test_package import count_in_list

Ahora, tenemos nuestra función. Tratemos de usarlo.

print(count_in_list(["gfg", "dsa", "gfg"], "gfg")) # output: 2
print(count_in_list(["gfg", "dsa", "gfg"], "maths")) # output: 0

Eso es todo. Si lo ponemos todo junto,

Python3

from test_package import count_in_list
  
print(count_in_list(["gfg", "dsa", "gfg"], "gfg")) # output: 2
print(count_in_list(["gfg", "dsa", "gfg"], "maths")) # output: 0

Producción:

Eso fue todo para desarrollar un paquete e implementarlo en PyPI.

Publicación traducida automáticamente

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