Comment assurer la répétabilité du code Julia et des dépendances associées ?
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 :
- Code créé dans son propre dossier
- Fait de ce dossier un environnement Julia (par
activate .
le mode package du REPL) add
ed 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.toml
fichier ? Si les [compat]
entrées sont nécessaires, existe-t-il un moyen d'inclure automatiquement cette entrée lors de la création add
du package ?
Existe-t-il une approche globale pour assurer la reproductibilité ?
Réponses
Cela verrouille-t-il les versions des dépendances ?
Si vous validez votre Project.toml
et Manifest.toml
que 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.
Cela verrouille-t-il les versions des dépendances ?
Oui, dans le sens où les versions exactes sont enregistrées dans le Manifest.toml
fichier donc tant que ce fichier n'est pas modifié elles sont verrouillées.
Ou dois-je ajouter manuellement des
[compat]
entrées auProject.toml
fichier ?
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 X
version 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
.