Я хочу установить локальный пакет (скажем, foo.jl) в среде по умолчанию, потому что я не хочу каждый раз активировать среду пакета (Pkg.activate("\path\to\foo.jl")
).
Однако, когда я пытаюсь установить пакет с помощью Pkg.add(path=\path\to\foo\)
, кажется, что файл project.toml из foo.jl не был выполнен. В частности, для foo.jl требуется "JuMP=1.5.0"
в модуле совместимости project.toml, но "JuMP=1.9.0"
был установлен и добавлен в project.toml среды по умолчанию.
Может ли кто-нибудь объяснить, как работает процесс? Я знаю, что могу использовать «instantiate» для воспроизведения среды, но она создает среду проекта и устанавливает пакет вместо установки пакета в среде по умолчанию.
Джулия использует семантическое управление версиями для совместимости пакетов.
Если вы пишете JuMP = "1.5.0"
, допустимая версия включает [1.5.0 - 2.0.0)
(обратите внимание, что диапазон открыт справа). Поскольку 1.9.0 в настоящее время является последней версией, она устанавливается, и это правильное ожидаемое поведение.
Скорее всего, вы хотели:
JuMP = "=1.5.0"
такая строка гарантирует, что будет установлена именно версия 1.5.0.
То, как вы добавляете пакеты, кажется правильным.
Дополнительные сведения о семантическом управлении версиями см. https://pkgdocs.julialang.org/v1/compatibility/
Ага, понятно. Я должен зафиксировать изменение.
Спасибо! Я изменил его на [compat] JuMP = "= 1.5.0" Но он все равно установил JuMP v1.9.0. Есть предположения?