Comment assurer la répétabilité du code Julia et des dépendances associées ?

Aug 19 2020

Disons que j'ai un projet où j'effectue une analyse (c'est-à-dire que je ne cherche pas à développer un package partageable) mais je veux m'assurer que d'autres peuvent cloner le référentiel et instancier les dépendances et exécuter le code tel qu'il est écrit.

Étapes que j'ai prises jusqu'à présent :

  1. Code créé dans son propre dossier
  2. Fait de ce dossier un environnement Julia (par activate .le mode package du REPL)
  3. added les packages que j'utilise

Cela verrouille-t-il les versions des dépendances ? Ou dois-je ajouter manuellement des [compat]entrées au Project.tomlfichier ? Si les [compat]entrées sont nécessaires, existe-t-il un moyen d'inclure automatiquement cette entrée lors de la création adddu package ?

Existe-t-il une approche globale pour assurer la reproductibilité ?

Réponses

5 KristofferCarlsson Aug 19 2020 at 18:42

Cela verrouille-t-il les versions des dépendances ?

Si vous validez votre Project.tomlet Manifest.tomlque quelqu'un peut cloner le référentiel, activez ce projet et import Pkg; Pkg.instantiate()téléchargez exactement les mêmes versions que celles enregistrées dans le manifeste.

3 fredrikekre Aug 19 2020 at 18:42

Cela verrouille-t-il les versions des dépendances ?

Oui, dans le sens où les versions exactes sont enregistrées dans le Manifest.tomlfichier donc tant que ce fichier n'est pas modifié elles sont verrouillées.

Ou dois-je ajouter manuellement des [compat]entrées au Project.tomlfichier ?

Vous n'avez pas à le faire. Cela n'a d'importance que lorsque quelqu'un effectue une opération de package qui appelle le résolveur, par exemple pkg> add ...ou pkg> up. Si votre code repose sur une version spécifique d'un package, vous pouvez toujours l'ajouter à la [compat]section. Par exemple, si vous comptez sur une fonctionnalité qui nécessite la Xversion 1.3.0 du package, vous pouvez ajouter

[compat]
X = "1.3"

Cela garantira que, même si quelqu'un invoque le résolveur de package, vous obtiendrez au moins la version 1.3 de package X.