Ver también CodeCamp pero con cuidado pues no hace falta meter los ficheros __init__.py en cada carpeta!!!
Para crear una librería hay que realizar los siguientes pasos básicos:
1. Crear la carpeta padre del proyecto y crear un entorno virtual en ella
Creamos por ejemplo la carpeta mymodule, y dentro de ella creamos el entorno virtual virtualenv
#Creamos la carpeta padre y nos situamo dentro de ella
mkdir mymodulecd mymodule
#Si no tenemos instalado para crear el entorno virtual lo instalamos
pip install virtualenv
# Creamos el entormo virtual y lo activamos
python -m venv myenv myenv\Scripts\activate.bat
2. Instal·lar en dicho entorno virtual las librerias wheel, setuptools y twine
#Creamos la carpeta padre y nos situamo dentro de ella
mkdir mymodulecd mymodule
#Si no tenemos instalado para crear el entorno virtual lo instalamos
pip install virtualenv
# Creamos el entormo virtual y lo activamos
python -m venv myenv myenv\Scripts\activate.bat
3. Creamos la estructura del proyecto: las subcarpetas ximo01, ximo02 y test
#Creamos las subcarpetas ximo01, ximo02 y testmkdir ximo01mkdir ximo02mkdir testcd mymodule
#Si no tenemos instalado para crear el entorno virtual lo instalamos
mymodule/
│
├── mi_paquete/
│ ├── __init__.py
│ ├── subcarpeta1/
│ │ ├── __init__.py
│ │ ├── modulo1.py
│ │ └── modulo2.py
│ ├── subcarpeta2/
│ │ ├── __init__.py
│ │ ├── modulo3.py
│ │ └── modulo4.py
│ └── subcarpeta3/
│ ├── __init__.py
│ ├── modulo5.py
│ └── modulo6.py
4. Crear entorno virtual y activarlo
#Si no tenemos instalado para crear el entorno virtual lo instalamos
pip install virtualenv
# Creamos el entormo virtual y lo activamos
python -m venv myenv
# lo activamos (windows)myenv\Scripts\activate.bat
# lo activamos (linux)
source myvenv/bin/activate
3. Crear una carpeta dentro de ximolib01parent con el nombre que queramos que tenga la librería por jemplo ximollib01
4. Entrar en la carpeta ximolib01parent y crear un entorno virtual de python y activarlo
python3 -m venv myvenv
source myvenv/bin/activate
Ojo: para que el entorno virtual se guarde en a configuración de vscode ver el siguiente post
5. Instalar en dicho entorno las librerías: wheel, setuptools y twine
pip install wheel setuptools twine
6. En la carpeta padre ximolib01parent crear estos ficheros
- setup.py (vacío)
- README.md (inicilamentre vacío, pero se puede dar información de la librería)
7. Situarse en ximolib01 (ximolib01parent/ximolib01) y crear estos ficheros:
- _init__.py (inicilamente vacío)
- Uno o varios ficheros python (.py) de las funcionalidades a crear
8. Situarse en ximolib01parent/tests y crear estos ficheros:
- _init__.py (inicilamente vacío)
- Uno o varios ficheros python (.py) que comiencen con test_ de las funcionalidades a testear
Veamos la estructura del proyecto
└>ximolib01
9. Ejemplo
Supongamos que solmente tenemos esta estructura simple de proyecto
└>ximolib01
Veamos el fichero formulas.py
import math def area_circle(radius): return math.pi * radius ** 2 def area_square(side): return side ** 2 def area_rectangle(length, width): return length * width
Veamos el contenido del fichero test_formulas.py
import unittest from ximolib01 import formulas class unitedTestSuite(unittest.TestCase): def test_circle_area(self): self.assertEqual(circle.circle_area(1), 3.1415926,'wrong circle area') def test_rectangle_area(self): assert rectangle.rectangle_area(1, 2) == 2
Observar en el test que importamos así
from ximolib01 import formulas
EJECUCIÓN DE LOS TESTS
Si ejecutamos desde vscode con el símbolo del triángulo de ejecución FALLA
Para ejecutarlo se recomienda desde el terminal de vstudio (y comprobando que estamos en el entorno virtual), nos situamos en la carpeta ximolib01parent y ejecutamos
python -m unittest tests/test_formula.py
y aparecen los resultados del test
10. Fichero ximolib01parent/setup.py
from setuptools import setup, find_packagesVERSION = '0.0.1'DESCRIPTION = 'My first python library'LONG_DESCRIPTION = 'This is my first library and I am very proud of it'# Setting upsetup(# the name must match the folder name 'ximolib01'name="ximolib01",version=VERSION,author="Ximo Dante",author_email="<ximodane@gmail.com>",description=DESCRIPTION,long_description=LONG_DESCRIPTION,packages=find_packages(),install_requires=['xmltodict'], # add any additional packages that# needs to be installed along with your package. Eg: 'caer'test_requires=[],keywords=['python', 'wsdl'],classifiers= ["Development Status :: 3 - Alpha","Intended Audience :: Education","Programming Language :: Python :: 3","Operating System :: MacOS :: MacOS X","Operating System :: Microsoft :: Windows","Operating System :: Linux :: Ubuntu",])
Los parámetros son:
install_requires indica la lista de librerías que se requieren previamente
test_requires indica la lista de librerías que se requieren previamente solo para realizar los tests
11.Construir (build) la librería
python setup.py bdist_wheel
12. Instalar la librería localmente
pip install /path/to/wheelfile.whl
13. Instalarla en https://pypi.org
13.1 Obtener una clave API de https://pypi.org/
Todo parece sencillo hasta que aparece un código QR que hay que leer con el authentictor de google del móvil y ya da un token enorme que hay que guardar
12. Ejecutar el builfd y la instalación
Ojo: utilizar setup está deprecado!!!!
python setup.py sdist bdist_wheel # Ya hecho antes
twine upload dist/*
Y nos pide el token anterior
Y además nos da una url donde ver la librería
https://pypi.org/project/ximolib01/0.0.1/
13. Instalar la librería
pip install ximolib01
No hay comentarios :
Publicar un comentario