Prueba tu paquete en distintos entornos

Desarrollo de paquetes en Python

James Fulton

Climate informatics researcher

Probar varias versiones de Python

Este setup.py permite cualquier versión de Python desde la 2.7 en adelante.

from setuptools import setup, find_packages

setup(
    ...
    python_requires='>=2.7',
)

Para probar estas versiones de Python debes:

  • Instalar todas estas versiones de Python
  • Instalar tu paquete y todas las dependencias en cada Python
  • Ejecutar pytest
Desarrollo de paquetes en Python

Probar varias versiones de Python

Este setup.py permite cualquier versión de Python desde la 2.7 en adelante.

from setuptools import setup, find_packages

setup(
    ...
    python_requires='>=2.7',
)

Para probar estas versiones de Python debes:

  • Instalar todas estas versiones de Python
  • Ejecutar tox
Desarrollo de paquetes en Python

¿Qué es tox?

  • Diseñado para ejecutar tests con varias versiones de Python
Desarrollo de paquetes en Python

Configura tox

Archivo de configuración: tox.ini

mysklearn/
|-- mysklearn
|   |-- ...
|-- tests
|   |-- ...
|-- setup.py
|-- LICENSE
|-- MANIFEST.in
|-- tox.ini   <--- archivo de configuración
Desarrollo de paquetes en Python

Configura tox

Archivo de configuración: tox.ini

[tox]

envlist = py27, py35, py36, py37
[testenv]
deps = pytest
commands = pytest
echo "run more commands" ...
  • Los encabezados van entre corchetes [...].
  • Para probar la versión X.Y de Python, añade pyXY a envlist.
  • Las versiones de Python que pruebes deben estar ya instaladas.
  • El parámetro commands lista los comandos de terminal que ejecutará tox.
  • La lista commands puede incluir cualquier comando de terminal, como ls, cd, echo, etc.
Desarrollo de paquetes en Python

Ejecutar tox

tox
mysklearn/    <-- navega aquí
|-- mysklearn
|   |-- ...
|-- tests
|   |-- ...
|-- setup.py
|-- LICENSE
|-- MANIFEST.in
|-- tox.ini
Desarrollo de paquetes en Python

Salida de tox

py27 create: /mypackages/mysklearn/.tox/py27
py27 installdeps: pytest
py27 inst: /mypackages/mysklearn/.tox/.tmp/package/1/mysklearn-0.1.0.zip
py27 installed: mysklearn==0.1.0,numpy==1.16.6,pandas==0.24.2,pytest==4.6.11,...
py27 run-test-pre: PYTHONHASHSEED='2837498672'
...
Desarrollo de paquetes en Python

Salida de tox

py27 run-test: commands[0] | pytest
======================== test session starts ========================
platform linux2 -- Python 2.7.17, ...
rootdir: /home/workspace/mypackages/mysklearn
collected 6 items                         

tests/preprocessing/test_normalize.py ...                     [ 50%]
tests/preprocessing/test_standardize.py ...                   [100%]

========================= 6 passed in 0.23s =========================
Desarrollo de paquetes en Python

Salida de tox

...
__________________________ summary __________________________
  py27: commands succeeded
  py35: commands succeeded
  py36: commands succeeded
  py37: commands succeeded
Desarrollo de paquetes en Python

Salida de tox

...
__________________________ summary __________________________
  py27: commands succeeded
  py35: commands succeeded
  py36: commands succeeded
ERROR:   py37: commands failed
Desarrollo de paquetes en Python

¡Vamos a practicar!

Desarrollo de paquetes en Python

Preparing Video For Download...