Как обеспечить повторяемость кода Julia и связанных зависимостей?

Скажем, у меня есть проект, в котором я выполняю анализ (т. Е. Не хочу разрабатывать совместно используемый пакет), но я хочу убедиться, что другие могут клонировать репозиторий и создать экземпляры зависимостей и запустить код, как написано.

Шаги, которые я сделал до сих пор:

  1. Созданный код в собственной папке
  2. Сделал эту папку средой Julia (activate . в пакетном режиме REPL)
  3. add отредактировал пакеты, которые я использую

Блокирует ли это версии зависимостей? Или мне нужно вручную добавить [compat] записи в Project.toml файл? Если необходимы [compat] записи, есть ли способ автоматически включать эту запись при add запуске пакета?

Есть ли общий подход к обеспечению воспроизводимости?


person Alec    schedule 19.08.2020    source источник


Ответы (2)


Блокирует ли это версии зависимостей?

Если вы зафиксируете свои Project.toml и Manifest.toml, тогда кто-то сможет клонировать репо, активировать этот проект и сделать import Pkg; Pkg.instantiate() загрузку тех же версий, которые записаны в манифесте.

person Kristoffer Carlsson    schedule 19.08.2020

Блокирует ли это версии зависимостей?

Да, в том смысле, что точные версии записываются в файл Manifest.toml, пока этот файл не изменяется, они заблокированы.

Или мне нужно вручную добавить [compat] записи в Project.toml файл?

Тебе не нужно этого делать. Это имеет значение только тогда, когда кто-то выполняет операцию пакета, которая вызывает преобразователь, например pkg> add ... или pkg> up. Если ваш код основан на какой-то конкретной версии пакета, вы всегда можете добавить ее в раздел [compat]. Например, если вы полагаетесь на функцию, для которой требуется пакет X версии 1.3.0, вы можете добавить

[compat]
X = "1.3"

Это гарантирует, что даже если кто-то вызовет распознаватель пакетов, вы по крайней мере получите версию 1.3 пакета X.

person fredrikekre    schedule 19.08.2020