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