Come posso garantire la ripetibilità del codice Julia e le dipendenze associate?

Aug 19 2020

Supponiamo che io abbia un progetto in cui sto eseguendo l'analisi (ovvero non sto cercando di sviluppare un pacchetto condivisibile) ma voglio assicurarmi che altri possano clonare il repository e istanziare le dipendenze ed eseguire il codice come scritto.

Passi che ho fatto finora:

  1. Codice creato nella sua cartella
  2. Ha reso quella cartella un ambiente Julia ( activate .nella modalità pacchetto del REPL)
  3. added i pacchetti che sto usando

Questo blocca le versioni delle dipendenze? O devo aggiungere manualmente [compat]voci al Project.tomlfile? Se gli [compat]entreis sono necessari, c'è un modo per includere automaticamente quella voce quando si addinvia il pacchetto?

Esiste un approccio globale per garantire la riferibilità?

Risposte

5 KristofferCarlsson Aug 19 2020 at 18:42

Questo blocca le versioni delle dipendenze?

Se commetti il ​​tuo Project.tomle Manifest.tomlpoi qualcuno può clonare il repository, attiva quel progetto e import Pkg; Pkg.instantiate()scarica le stesse identiche versioni registrate nel manifest.

3 fredrikekre Aug 19 2020 at 18:42

Questo blocca le versioni delle dipendenze?

Sì, nel senso che le versioni esatte sono registrate nel Manifest.tomlfile quindi finché quel file non viene modificato sono bloccati.

O devo aggiungere manualmente [compat]voci al Project.tomlfile?

Non devi farlo. Ciò è importante solo quando qualcuno esegue un'operazione sul pacchetto che richiama il resolver, ad esempio pkg> add ...o pkg> up. Se il tuo codice si basa su una versione specifica di un pacchetto, puoi sempre aggiungerlo alla [compat]sezione. Ad esempio, se ti affidi a una funzionalità che richiede la Xversione del pacchetto 1.3.0, puoi aggiungere

[compat]
X = "1.3"

Ciò assicurerà che, anche se qualcuno invoca il risolutore di pacchetti, otterrai almeno la versione 1.3 di package X.