Как обеспечить повторяемость кода 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
.