python:packaging

Ceci est une ancienne révision du document !


Packaging des module

Arborescence :

.
├── pyproject.toml
├── setup.cfg
└── src
    └── example_package
        ├── example.py
        └── __init__.py
pyproject.toml
[build-system]
requires = [
    "setuptools>=42",
    "wheel"
]
build-backend = "setuptools.build_meta"
setup.cfg
[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
example.py
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
  • python/packaging.1640343516.txt.gz
  • Dernière modification : 2021/12/24 11:58
  • de phsw