====== Packaging de modules Python ======
==== Version de base ====
* [[https://packaging.python.org/en/latest/tutorials/packaging-projects/]]
* https://setuptools.pypa.io/en/latest/index.html
Arborescence :
.
├── pyproject.toml
├── setup.cfg
└── src
└── example_package
├── example.py
└── __init__.py
[build-system]
requires = [
"setuptools>=42",
"wheel"
]
build-backend = "setuptools.build_meta"
[metadata]
name = example-pkg-YOUR-USERNAME-HERE
version = 0.0.1
author = Example Author
author_email = author@example.com
description = A small example package
url = https://github.com/pypa/sampleproject
project_urls =
Bug Tracker = https://github.com/pypa/sampleproject/issues
classifiers =
Programming Language :: Python :: 3
License :: OSI Approved :: MIT License
Operating System :: OS Independent
[options]
package_dir =
= src
packages = find:
python_requires = >=3.6
[options.packages.find]
where = src
def add_one(number):
return number + 1
Le fichier ''%%__init__%%.py'' est vide.
On peut construire le paquet avec :
python3 -m build
# ou
pip wheel .
On peut directement installer le paquet avec (avec ''pip'' pas besoin de construire le paquet avant) :
pip install .
On peut ensuite le désinstaller :
pip uninstall example-pkg-YOUR-USERNAME-HERE
Le module est installé dans ''~/.local/lib/python3.9/site-packages''.
Une fois installé le module est utilisable :
from example_package import example
example.add_one(3)
=== Cacher l'organisation interne du module ===
En mettant dans ''%%__init__%%.py'' :
from .example import *
on peut directement faire :
import example_package
example_package.add_one(3)
=== Simplifier l'arborescence ===
Il est possible de supprimer un niveau dans l'arborescence :
.
├── example_package
│ ├── example.py
│ └── __init__.py
├── pyproject.toml
└── setup.cfg
Les options dans ''setup.cfg'' deviennent alors seulement :
[options]
packages = find:
python_requires = >=3.6