Création d’un package Python (Pypi)
* https://test.pypi.org/manage/project/ Dans le doute, passer par un test !!!
* https://pypi.org/manage/project/
Arborescence et fichiers
git_my_name_module
├── docs
│ ├── make.bat
│ ├── Makefile
│ └── source
│ ├── conf.py
│ ├── index.rst
│ ├── parserhtml.rst
│ └── readme.rst
├── LICENSE
├── README.md
├── requirements.txt
├── setup.cfg
├── setup.py
└── src
├── my_name_module
│ ├── __init__.py
│ ├── _members.py
│ └── ...
└── tests
├── __init__.py
└── test_my_name_module.py
# setup.cfg file at the root directory
[metadata]
name = my_name_module
version = 0.0.1a0
author = Pierre
description = Une courte description (bandeau de Pypi)
long_description = file:README.md
long_description_content_type = text/markdown
url = url_doc_par_exemple
project_urls =
Source Code = url_git
keywords = mots-clefs
[options]
python_requires = >=3.9, <4
install_requires =
module>=version
package_dir=
=src
packages=my_name_module
[options.extras_require]
doc =
sphinx==6.2.1
sphinx-rtd-theme==1.2.1
myst-parser==1.0.0
tests =
pytest
import sys
if __name__ == '__main__':
try:
import sphinx
except ImportError:
sphinxInstalled=False
else:
sphinxInstalled=True
#endTry
if not sphinxInstalled:
sys.stderr.write(f"> Warning, Sphinx is not installed ; I'll try it.\n")
#endIf
setup()
#endIf
Préinstallation
* Il est important de vérifier que le module marche bien avant (sur Pypi, impossible de supprimer module pour rollback la version !)
$ python3 -m venv pppmod
$ source pppmod/bin/activate
$ cd git_my_name_module
$ pip3 install --upgrade --force-reinstall .
$ python3
> import my_name_module
> my_name_module.MyClass()
$ pip uninstall my_name_module
$ deactivate # Quitter l'environnement
* Si toutes les étapes précédentes sont bonnes, alors on peut passer à la suite : la création du module proprement dit et l’upload
$ python3.9 setup.py sdist bdist_wheel
$ twine upload dist/my_name_module-0.0.1a0.tar.gz
$ source pppmod/bin/activate
$ pip3 install my_name_module
À faire
* Compiler !
Sources
* https://towardsdatascience.com/create-your-own-python-package-and-publish-it-into-pypi-9306a29bc116
* https://sebsauvage.net/streisand.me/sametmax/?20181206_110748_Vive_setup.cfg__et_mort_a_pyproject.toml___
* https://stackoverflow.com/questions/32688688/how-to-write-setup-py-to-include-a-git-repository-as-a-dependency
* https://peps.python.org/pep-0440/#post-releases
Badges :
* https://docs.gitlab.com/ee/user/project/badges.html
* https://docs.gitlab.com/ee/api/project_badges.html
* https://gitlab.com/gitlab-org/gitlab/-/issues/29457