Juliaコードと関連する依存関係の再現性を確保するにはどうすればよいですか?
分析を実行している(つまり、共有可能なパッケージの開発を検討していない)プロジェクトがありますが、他のユーザーがリポジトリのクローンを作成して依存関係をインスタンス化し、記述どおりにコードを実行できるようにしたいとします。
これまでに行った手順:
- 独自のフォルダにコードを作成
- そのフォルダをJulia環境にしました(
activate .
REPLのパッケージモードで) add
私が使用しているパッケージを編集しました
これは依存関係のバージョンをロックしますか?または[compat]
、Project.toml
ファイルに手動でエントリを追加する必要がありますか?[compat]
エントリが必要な場合、add
パッケージを作成するときにそのエントリを自動的に含める方法はありますか?
再現性を確保するための全体的なアプローチはありますか?
回答
これは依存関係のバージョンをロックしますか?
コミットするProject.toml
とManifest.toml
、誰かがリポジトリのクローンを作成し、そのプロジェクトをアクティブ化しimport Pkg; Pkg.instantiate()
て、マニフェストに記録されているものとまったく同じバージョンをダウンロードできます。
これは依存関係のバージョンをロックしますか?
はい、Manifest.toml
ファイルが変更されていない限り、正確なバージョンがファイルに記録されるという意味で、それらはロックされています。
または
[compat]
、Project.toml
ファイルに手動でエントリを追加する必要がありますか?
これを行う必要はありません。これは、誰かがリゾルバーを呼び出すパッケージ操作を実行する場合にのみ重要です。たとえば、pkg> add ...
またはpkg> up
。コードがパッケージの特定のバージョンに依存している場合は、いつでもこれを[compat]
セクションに追加できます。たとえば、パッケージX
バージョン1.3.0を必要とする機能に依存している場合は、追加できます。
[compat]
X = "1.3"
これにより、誰かがパッケージリゾルバーを呼び出した場合でも、少なくともバージョン1.3のパッケージを取得できるようになりますX
。