Julia 코드 및 관련 종속성의 반복성을 어떻게 보장합니까?

Aug 19 2020

내가 분석을 수행하는 프로젝트 (예 : 공유 가능한 패키지를 개발하지 않음)가 있지만 다른 사람들이 저장소를 복제하고 종속성을 인스턴스화하고 작성된대로 코드를 실행할 수 있는지 확인하고 싶다고 가정 해 보겠습니다.

지금까지 취한 조치 :

  1. 자체 폴더에 생성 된 코드
  2. 해당 폴더를 Julia 환경으로 만들었습니다 ( activate .REPL의 패키지 모드에서).
  3. add내가 사용하고있는 패키지

이것은 종속성 버전에서 잠기나요? 아니면 파일 에 [compat]항목을 수동으로 추가해야 Project.toml합니까? 항목 [compat]이 필요한 add경우 패키지를 작성할 때 해당 항목을 자동으로 포함하는 방법이 있습니까?

reporducability를 보장하기위한 전반적인 접근 방식이 있습니까?

답변

5 KristofferCarlsson Aug 19 2020 at 18:42

이것은 종속성 버전에서 잠기나요?

커밋 Project.toml하고 Manifest.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의 package를 얻을 수 X있습니다.