Maison  >  Article  >  développement back-end  >  Comment vérifier l'intervalle de version de la bibliothèque de compatibilité de mon package en python ?

Comment vérifier l'intervalle de version de la bibliothèque de compatibilité de mon package en python ?

WBOY
WBOYavant
2024-02-08 22:21:241143parcourir

如何在 python 中检查我的包的兼容库版本间隔?

Contenu de la question

Je développe une bibliothèque Python privée et j'y utilise d'autres bibliothèques publiques. Je souhaite définir un intervalle de version compatible pour chaque bibliothèque publique utilisée par ma bibliothèque personnalisée.

J'ai mis en place des tests pour vérifier si la bibliothèque fonctionne correctement. J'ai juste besoin de trouver un moyen de tester mon code dans chaque combinaison de chaque bibliothèque publique.

J'ai essayé d'utiliser tox mais il semble que je doive écrire une combinaison de chaque bibliothèque dans le fichier tox.ini afin qu'il puisse créer l'environnement avec différentes versions des bibliothèques. Existe-t-il un moyen automatisé de procéder ?

Par exemple : mon environnement de développement contient les bibliothèques suivantes et elles ont réussi mes tests.

  • numpy==1.24.3

  • matplotlib==3.7.3

J'aimerais savoir s'il est possible de tester la combinaison suivante

  • numpy==1.24.0, 1.24.1 ... 1.24.x
  • matplotlib==3.7.1, 3.7.2 ... 3.7.x

De manière automatisée.


Bonne réponse


Merci à tous ceux qui m'ont aidé dans la section commentaires. Comme @sinoroc l'a suggéré, l'utilisation de nox a résolu mon problème de manière très intuitive. Bien que ce ne soit pas une pratique courante, je partagerai la solution que j'ai utilisée dans l'exemple donné dans la question au cas où quelqu'un comme moi aurait besoin de tester son projet.

Le code dans noxfile.py est le suivant.

import nox

@nox.session(name = "test_sample")
@nox.parametrize("numpy", ["1.24.3", "1.24.2"])
@nox.parametrize("matplotlib", ["3.7.3", "3.7.2"])
def tests(session, numpy, matplotlib):
    session.install(f"numpy=={numpy}", f"matplotlib=={matplotlib}")
    session.run("pytest")

Le décorateur paramétré définit la version qui sera utilisée. Puisque j'ai utilisé deux versions différentes de deux bibliothèques différentes, j'obtiendrais 4 (2*2) résultats de tests pour différentes combinaisons de versions.

Remarque : J'ai observé que nox utilise la commande python -m pip pour installer les bibliothèques. Par conséquent, s’il existe des dépendances communes entre les bibliothèques publiques que nous testons, des problèmes de couverture peuvent survenir lorsqu’une version donnée de la bibliothèque est écrasée lorsqu’une autre bibliothèque est installée. Je ne trouve pas de solution, mais c'est aussi précis que les tests de version peuvent l'être.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer