Juliaコードと関連する依存関係の再現性を確保するにはどうすればよいですか?

Aug 19 2020

分析を実行している(つまり、共有可能なパッケージの開発を検討していない)プロジェクトがありますが、他のユーザーがリポジトリのクローンを作成して依存関係をインスタンス化し、記述どおりにコードを実行できるようにしたいとします。

これまでに行った手順:

  1. 独自のフォルダにコードを作成
  2. そのフォルダをJulia環境にしました(activate .REPLのパッケージモードで)
  3. add私が使用しているパッケージを編集しました

これは依存関係のバージョンをロックしますか?または[compat]Project.tomlファイルに手動でエントリを追加する必要がありますか?[compat]エントリが必要な場合、addパッケージを作成するときにそのエントリを自動的に含める方法はありますか?

再現性を確保するための全体的なアプローチはありますか?

回答

5 KristofferCarlsson Aug 19 2020 at 18:42

これは依存関係のバージョンをロックしますか?

コミットするProject.tomlManifest.toml、誰かがリポジトリのクローンを作成し、そのプロジェクトをアクティブ化しimport Pkg; Pkg.instantiate()て、マニフェストに記録されているものとまったく同じバージョンをダウンロードできます。

3 fredrikekre Aug 19 2020 at 18:42

これは依存関係のバージョンをロックしますか?

はい、Manifest.tomlファイルが変更されていない限り、正確なバージョンがファイルに記録されるという意味で、それらはロックされています。

または[compat]Project.tomlファイルに手動でエントリを追加する必要がありますか?

これを行う必要はありません。これは、誰かがリゾルバーを呼び出すパッケージ操作を実行する場合にのみ重要です。たとえば、pkg> add ...またはpkg> up。コードがパッケージの特定のバージョンに依存している場合は、いつでもこれを[compat]セクションに追加できます。たとえば、パッケージXバージョン1.3.0を必要とする機能に依存している場合は、追加できます。

[compat]
X = "1.3"

これにより、誰かがパッケージリゾルバーを呼び出した場合でも、少なくともバージョン1.3のパッケージを取得できるようになりますX