Пакетный менеджер Pkg
Pkg — встроенный менеджер пакетов Julia, который отвечает за такие операции, как установка, обновление и удаление пакетов.
Следующее — очень краткое введение в Pkg. Для получения более подробной информации о файлах Project.toml, файлах Manifest.toml, совместимости версий пакетов ([compat]), средах, репозиториях и т. д., настоятельно рекомендуется прочитать полное руководство, которое доступно здесь: https://julialang.github.io/Pkg.jl/v1/.
Ниже представлен краткий обзор Pkg, менеджера пакетов Julia. Он поможет новым пользователям ознакомиться с основными функциями Pkg.
Pkg поставляется с REPL. Перейдите в REPL Pkg, нажав ] из REPL Julia. Чтобы вернуться в REPL Julia, нажмите клавишу Backspace или ^C.
Это руководство полагается на Pkg REPL для выполнения команд Pkg. Для неинтерактивного использования мы рекомендуем API Pkg. API Pkg полностью документирован в разделе «Ссылка на API» документации Pkg.
После входа в REPL Pkg вы должны увидеть похожий приглашающий запрос:
(v1.1) pkg>
Чтобы добавить пакет, используйте add:
(v1.1) pkg> add Example
Некоторые выводы Pkg были опущены, чтобы сохранить фокус этого руководства. Это поможет поддерживать хороший темп и не углубляться в детали. Если вам нужны более подробные сведения, обратитесь к последующим разделам руководства по Pkg.
Мы также можем указать несколько пакетов одновременно:
(v1.1) pkg> add JSON StaticArrays
Чтобы удалить пакеты, используйте rm:
(v1.1) pkg> rm JSON StaticArrays
До сих пор мы ссылались только на зарегистрированные пакеты. Pkg также поддерживает работу с незарегистрированными пакетами. Чтобы добавить незарегистрированный пакет, укажите URL:
(v1.1) pkg> add https://github.com/JuliaLang/Example.jl
Используйте rm для удаления этого пакета по имени:
(v1.1) pkg> rm Example
Используйте update для обновления установленного пакета:
(v1.1) pkg> update Example
Чтобы обновить все установленные пакеты, используйте update без каких-либо аргументов:
(v1.1) pkg> update
До этого момента мы рассмотрели базовые операции управления пакетами: добавление, обновление и удаление пакетов. Это будет знакомо, если вы использовали другие менеджеры пакетов. Pkg предоставляет значительные преимущества по сравнению с традиционными менеджерами пакетов, организуя зависимости в средах.
Вы, возможно, заметили (v1.1) в приглашении REPL. Это позволяет нам знать, что v1.1 является активной средой. Активная среда — это среда, которая будет изменяться командами Pkg, такими как add, rm и update.
Давайте создадим новую среду для экспериментов. Чтобы установить активную среду, используйте activate:
(v1.1) pkg> activate tutorial [ Info: activating new environment at `/tmp/tutorial/Project.toml`.
Pkg сообщает нам, что мы создаем новую среду и что эта среда будет храниться в каталоге /tmp/tutorial.
Pkg также обновил приглашение REPL для отражения новой активной среды:
(tutorial) pkg>
Мы можем запросить информацию об активной среде, используя status:
(tutorial) pkg> status
Status `/tmp/tutorial/Project.toml`
(empty environment)
/tmp/tutorial/Project.toml — это расположение файла проекта активной среды. Файл проекта — это то место, где Pkg хранит метаданные для среды. Обратите внимание, что эта новая среда пуста. Давайте добавим пакет и понаблюдаем:
(tutorial) pkg> add Example
...
(tutorial) pkg> status
Status `/tmp/tutorial/Project.toml`
[7876af07] Example v0.5.1
Мы видим, что tutorial теперь содержит Example в качестве зависимости.
Допустим, мы работаем над Example и считаем, что ему нужна новая функциональность. Как мы можем изменить исходный код? Мы можем использовать develop для настройки git-клона пакета Example.
(tutorial) pkg> develop --local Example
...
(tutorial) pkg> status
Status `/tmp/tutorial/Project.toml`
[7876af07] Example v0.5.1+ [`dev/Example`]
Обратите внимание, что обратная связь изменилась. dev/Example указывает на расположение недавно созданного клона. Если мы заглянем в каталог /tmp/tutorial, мы заметим следующие файлы:
tutorial ├── dev │ └── Example ├── Manifest.toml └── Project.toml
Вместо загрузки зарегистрированной версии Example, Julia загрузит исходный код, содержащийся в tutorial/dev/Example.
Давайте попробуем. Сначала изменим файл по адресу tutorial/dev/Example/src/Example.jl и добавим простую функцию:
plusone(x::Int) = x + 1
Теперь мы можем вернуться в REPL Julia и загрузить пакет:
julia> import Example
Пакет может быть загружен только один раз за сеанс Julia. Если вы выполнили import Example в текущем сеансе Julia, вам придется перезапустить Julia и повторно выполнить activate tutorial в REPL Pkg. Revise.jl может сделать этот процесс значительно приятнее, но настройка его выходит за рамки данного руководства.
Julia должна загрузить наш новый код. Давайте протестируем его:
julia> Example.plusone(1) 2
Допустим, мы передумали и решили, что мир не готов к такому элегантному коду. Мы можем сказать Pkg, чтобы он перестал использовать локальный клон и вместо этого использовал зарегистрированную версию. Мы делаем это с помощью free:
(tutorial) pkg> free Example
Когда вы закончите эксперименты с tutorial, вы можете вернуться к стандартной среде, выполнив activate без аргументов:
(tutorial) pkg> activate (v1.1) pkg>
Если у вас возникнут трудности, вы можете попросить Pkg о помощи:
(v1.1) pkg> ?
Вы должны увидеть список доступных команд вместе с краткими описаниями. Вы можете запросить более подробную помощь, указав команду:
(v1.1) pkg> ?develop
Это руководство должно помочь вам начать работу с Pkg. Pkg предлагает гораздо больше возможностей для мощного управления пакетами, ознакомьтесь с полным руководством, чтобы узнать больше!
© 2009–2020 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.5.3/stdlib/Pkg/