Empaquetado y publicación de código Python

Si ha estado programando en python, aunque sea por un tiempo, ya debe estar familiarizado con el concepto de ‘pip’. Es un sistema de administración de paquetes que se utiliza para instalar y administrar paquetes/bibliotecas de software escritos en Python.
Entonces uno puede preguntar dónde están almacenados todos estos paquetes/bibliotecas. Es obvio que debe existir un gran “repositorio en línea” que almacene todo este código. Y la respuesta a esta pregunta es Python Package Index (PyPI).

PyPI es el repositorio oficial de software de terceros para Python. Al momento de escribir este artículo, ¡PyPI ya alojaba 95971 paquetes!
pip usa PyPI como la fuente predeterminada para los paquetes y sus dependencias. Así que cada vez que escriba:

 pip install package_name

pip buscará ese paquete en PyPI y, si lo encuentra, lo descargará e instalará en su sistema local.

En este artículo, demostraré cómo puede publicar su propio paquete de Python en PyPI para que sea instalable en una sola línea y esté fácilmente disponible para todos los demás usuarios de Python en línea. Tomaré el ejemplo de un paquete de muestra y le mostraré el proceso completo. El paquete de ejemplo está alojado en Github .

Paso 1: Prepare los scripts de Python

¡El primer paso es, por supuesto, preparar su programa Python (que desea publicar en PyPI)!

Podría ser cualquier script de Python. Aquí estoy usando mi propia secuencia de comandos de python que he llamado ‘ locator.py ‘ (estoy usando este nombre solo como referencia. Siéntase libre de guardar sus secuencias de comandos de python con cualquier nombre). Este archivo está disponible aquí .

Paso 2: Preparar la estructura del directorio del paquete

Éste es el paso más importante. Ahora, tenemos que seguir una estructura predefinida para el directorio de nuestro paquete.
Como referencia, no dude en consultar el repositorio de Github del proyecto de muestra que se utiliza en este tutorial. Puede clonar este repositorio y hacer algunas modificaciones para crear su propio paquete.

La estructura del directorio tiene que ser así:
Getting the package-directory structure ready

Ok, analicemos qué contendrán todos estos archivos.

  • setup.py: Es el archivo más importante. Es el archivo donde se configuran varios aspectos de tu proyecto. La característica principal de setup.py es que contiene una función setup() global. Los argumentos de palabras clave para esta función son cómo se definen los detalles específicos de su proyecto.
    Deberá instalar esta biblioteca de herramientas de configuración usando pip:
    pip install setuptools

    Así es como se ve mi setup.py :

    from setuptools import setup
      
    # reading long description from file
    with open('DESCRIPTION.txt') as file:
        long_description = file.read()
      
      
    # specify requirements of your package here
    REQUIREMENTS = ['requests']
      
    # some more details
    CLASSIFIERS = [
        'Development Status::4 - Beta',
        'Intended Audience::Developers',
        'Topic::Internet',
        'License::OSI Approved::MIT License',
        'Programming Language::Python',
        'Programming Language::Python::2',
        'Programming Language::Python::2.6',
        'Programming Language::Python::2.7',
        'Programming Language::Python::3',
        'Programming Language::Python::3.3',
        'Programming Language::Python::3.4',
        'Programming Language::Python::3.5',
        ]
      
    # calling the setup function 
    setup(name='mygmap',
          version='1.0.0',
          description='A small wrapper around google maps api',
          long_description=long_description,
          author='Nikhil Kumar Singh',
          author_email='nikhilksingh97@gmail.com',
          license='MIT',
          packages=['geo'],
          classifiers=CLASSIFIERS,
          install_requires=REQUIREMENTS,
          keywords='maps location address'
          )

    Veamos qué hacen los diferentes argumentos de la función de configuración:

    1. name : Es el nombre de tu proyecto. Su paquete aparecerá con este nombre en PyPI.
    2. version : Es una string en la que puedes especificar la versión actual de tu proyecto.
      Es totalmente su elección cómo desea establecer el esquema de la serie de versiones (puede usar ‘1.0’ o ‘0.1’ o incluso ‘0.0.1’).
      Esta versión se muestra en PyPI para cada versión si publica su proyecto. Cada vez que subas una nueva versión, también tendrás que cambiar este argumento.
    3. description: Una breve descripción sobre el paquete. Puede usar el argumento long_description para escribir descripciones largas.
    4. long_description: podemos usar texto enriquecido para una mejor descripción de nuestros archivos. El formato de archivo predeterminado es reStructuredText . Puede echar un vistazo a DESCRIPTION.txt para tener una idea de la sintaxis.
    5. url: una URL de página de inicio para su proyecto. Esto facilita que las personas sigan o contribuyan a su proyecto.
    6. autor, autor_email: Detalles sobre el autor
    7. licencia: especifique el tipo de licencia que está utilizando.
    8. clasificadores: es una lista de strings en las que podemos especificar más detalles sobre nuestro proyecto, como su estado de desarrollo, tema, licencia y versiones de python compatibles con su proyecto. Puedes ver más clasificadores aquí .
    9. install_requires: se puede usar para especificar qué bibliotecas de terceros necesita ejecutar su paquete. Estas dependencias serán instaladas por pip cuando alguien instale su paquete.
    10. palabras clave: Haga una lista de palabras clave para describir su proyecto.
  • DESCRIPTION.txt : este archivo contiene la descripción larga de nuestro paquete para mostrar en la página de PyPI. Usamos el formato de archivo reStructuredText aquí. Compruebe el archivo utilizado en nuestro paquete aquí .
  • LICENSE.txt : es una buena práctica establecer una licencia para el uso de su proyecto. Puede utilizar cualquiera de las plantillas disponibles gratuitamente. La más utilizada es la licencia MIT .
    La licencia que estoy usando para este proyecto está disponible aquí . (Puede reemplazar el nombre del autor para usar esta licencia en sus proyectos)
  • README.md : este archivo no tiene nada que ver con nuestro paquete PyPI. Contiene una descripción que se mostrará en la página de Github. También puede usarlo para la página PyPI, pero necesitará algunas modificaciones más en nuestro código. Por ahora, hagámoslo simple.
  • __init__.py : el uso principal de __init__.py es inicializar un paquete de python.
    La inclusión de este archivo en un directorio le indica al intérprete de Python que el directorio debe tratarse como un paquete de Python.
    Puede dejar este archivo vacío.

Paso 3: Cree sus cuentas
Ahora, es el momento de crear una cuenta en PyPI y Test PyPI . Test PyPI es solo un sitio de prueba donde cargaremos nuestro código primero para ver si todo funciona correctamente o no.

Una vez que se hayan creado las cuentas, cree este archivo .pypirc en el directorio de inicio de su sistema e ingrese los detalles de la cuenta.

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username= your_username
password= your_password

[pypitest]
repository=https://testpypi.python.org/pypi
username= your_username
password= your_password

Nota : si está en un sistema Windows, simplemente escriba echo %USERPROFILE% en el símbolo del sistema para conocer el directorio de inicio de su PC. Coloque el archivo .pypirc allí.

Paso 4: Cargue el paquete

¡Finalmente, estamos listos para cargar nuestro paquete en PyPI!

  • En primer lugar, comprobaremos si nuestro paquete se instala correctamente en Test PyPI.
    Abra el símbolo del sistema/terminal en el directorio raíz de su paquete.
    Ejecuta esto en la terminal:
    python setup.py register -r pypitest

    Esto intentará registrar su paquete en el servidor de prueba de PyPI, solo para asegurarse de que haya configurado todo correctamente.

    Ahora, ejecuta esto:

    python setup.py sdist upload -r pypitest

    No debería recibir errores y ahora también debería poder ver su biblioteca en el repositorio PyPI de prueba .

  • Una vez que haya subido con éxito a PyPI Test, realice los mismos pasos pero apunte al servidor PyPI en vivo en su lugar.
    Para registrarse en PyPI, ejecute:
    python setup.py register -r pypi

    Entonces corre:

    python setup.py sdist upload -r pypi

¡Y ya está! ¡Su paquete ahora está disponible públicamente en PyPI y podría instalarse fácilmente con un simple comando pip!
El paquete que creamos usando este tutorial está disponible aquí .

Simplemente escriba en la terminal,

 pip install your_package_name

para verificar si el proceso de instalación se completa con éxito.

Referencias:

Este artículo es una contribución de Nikhil Kumar . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

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