Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
Tento repozitář je archivovaný. Můžete prohlížet soubory, klonovat, ale nemůžete nahrávat a vytvářet nové úkoly a požadavky na natažení.

03-bibliotheques-tierces.rst 3.5 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. Bibliothèques tierces
  2. =====================
  3. Prenons un exemple::
  4. # dans foo.py
  5. import tabulate
  6. scores = [
  7. ["John", 345],
  8. ["Mary-Jane", 2],
  9. ["Bob", 543],
  10. ]
  11. table = tabulate.tabulate(scores)
  12. print(table)
  13. .. code-block:: console
  14. $ python3 foo.py
  15. --------- ---
  16. John 345
  17. Mary-Jane 2
  18. Bob 543
  19. --------- ---
  20. Ici, le module ``tabulate`` n'est ni dans la bibliothèque standard, ni écrit par l'auteur du script ``foo.py``. On dit que c'est une bibliothèque tierce.
  21. On peut trouver `le code source de tabulate
  22. <https://bitbucket.org/astanin/python-tabulate/src/master/>`_ facilement. La
  23. question qui se pose alors est: comment faire en sorte que `sys.path`
  24. contienne le module ``tabulate``?
  25. Eh bien, plusieurs solutions s'offrent à vous.
  26. Le gestionnaire de paquets
  27. ---------------------------
  28. Si vous utilisez une distribution Linux, peut-être pourrez-vous utiliser votre gestionnaire de paquets:
  29. .. code-block:: console
  30. $ sudo apt install python3-tabulate
  31. Comme vous lancez votre gestionnaire de paquets avec ``sudo``, celui-ci sera capable d'écrire dans les chemins système de ``sys.path``.
  32. À la main
  33. ----------
  34. Une autre méthode consiste à partir des sources - par exemple, si le paquet de votre distribution n'est pas assez récent, ou si vous avez besoin de modifier le code de la bibliothèque en question.
  35. Voici une marche à suivre possible :
  36. 1. Récupérer les sources de la version qui vous intéresse dans la `section téléchargement de bitbucket <https://bitbucket.org/astanin/python-tabulate/downloads/?tab=tags>`_.
  37. 1. Extraire l'archive, par exemple dans ``src/tabulate``
  38. 1. Se rendre dans ``src/tabulate`` et lancer ``python3 setup.py install --user``
  39. Anatomie du fichier setup.py
  40. -----------------------------
  41. La plupart des bibliothèques Python contiennent un ``setup.py`` à
  42. la racine de leurs sources. Il sert à plein de choses, la commande ``install``
  43. n'étant qu'une parmi d'autres.
  44. Le fichier ``setup.py`` contient en général simplement un ``import`` de
  45. ``setuptools``, et un appel à la fonction ``setup()``, avec de nombreux
  46. arguments::
  47. # tabulate/setup.py
  48. from setuptools import setup
  49. setup(
  50. name='tabulate',
  51. version='0.8.1',
  52. description='Pretty-print tabular data',
  53. py_modules=["tabulate"],
  54. scripts=["bin/tabulate"],
  55. ...
  56. )
  57. Résultat de l'invocation de setup.py
  58. -------------------------------------
  59. Par défaut, ``setup.py`` essaiera d'écrire dans un des chemins système de
  60. ``sys.path``, d'où l'utilisation de l'option ``--user``.
  61. Voici à quoi ressemble la sortie de la commande:
  62. .. code-block:: console
  63. $ cd src/tabulate
  64. $ python3 setup.py install --user
  65. running install
  66. ...
  67. Copying tabulate-0.8.4-py3.7.egg to /home/dmerej/.local/lib/python3.7/site-packages
  68. ...
  69. Installing tabulate script to /home/dmerej/.local/bin
  70. Notez que module a été copié dans ``~/.local/lib/python3.7/site-packages/``
  71. et le script dans ``~/.local/bin``. Cela signifie que *tous* les scripts Python
  72. lancés par l'utilisateur courant auront accès au module ``tabulate``.
  73. Notez également qu'un script a été installé dans ``~/.local/bin`` - Une
  74. bibliothèque Python peut contenir aussi bien des modules que des scripts.
  75. Un point important est que vous n'avez en général pas besoin de lancer le
  76. script directement. Vous pouvez utiliser ``python3 -m tabulate``. Procéder
  77. de cette façon est intéressant puisque vous n'avez pas à vous soucier de
  78. rajouter le chemin d'installation des scripts dans la variable d'environnement
  79. PATH.