Spec-Zone.ru › Julia 1.3

Упаковщик

Упаковщик — встроенный менеджер пакетов Julia, который обрабатывает операции по установке, обновлению и удалению пакетов.

Примечание

Ниже приведён очень краткий вводный курс по Упаковщику. Для получения более подробной информации о файлах Project.toml, файлах Manifest.toml, совместимости версий пакетов ([compat]), средах, реестрах и т. д. настоятельно рекомендуется прочитать полное руководство, доступное по адресу: https://julialang.github.io/Pkg.jl/v1/.

Ниже представлен краткий обзор Упаковщика — менеджера пакетов Julia. Он должен помочь новым пользователям ознакомиться с основными функциями Упаковщика.

Упаковщик поставляется с REPL. Запустите REPL Упаковщика, нажав ] в REPL Julia. Чтобы вернуться в REPL Julia, нажмите Backspace или ^C.

Примечание

Это руководство полагается на REPL Упаковщика для выполнения команд Упаковщика. Для неинтерактивного использования рекомендуется API Упаковщика. API Упаковщика полностью документирован в разделе «Ссылка по API» документации Упаковщика на странице API Reference.

После входа в REPL Упаковщика вы увидите примерно такой же приглашающий символ:

(v1.1) pkg>

Чтобы добавить пакет, используйте add:

(v1.1) pkg> add Example
Примечание

Некоторая выходная информация Упаковщика была опущена, чтобы сохранить фокус этого руководства. Это поможет поддерживать хороший темп и не увязнуть в деталях. Если вам нужны более подробные сведения, обратитесь к последующим разделам руководства по Упаковщику.

Мы также можем указать несколько пакетов одновременно:

(v1.1) pkg> add JSON StaticArrays

Чтобы удалить пакеты, используйте rm:

(v1.1) pkg> rm JSON StaticArrays

До сих пор мы ссылались только на зарегистрированные пакеты. Упаковщик также поддерживает работу с незарегистрированными пакетами. Чтобы добавить незарегистрированный пакет, укажите 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

До этого момента мы рассмотрели основные операции по управлению пакетами: добавление, обновление и удаление пакетов. Это будет знакомо, если вы использовали другие менеджеры пакетов. Упаковщик предлагает значительные преимущества по сравнению с традиционными менеджерами пакетов, организуя зависимости в средах.

Вы могли заметить (v1.1) в приглашении REPL. Это сообщает нам, что v1.1 является активной средой. Активная среда — это среда, которая будет изменяться командами Упаковщика, такими как add, rm и update.

Давайте настроим новую среду, чтобы мы могли экспериментировать. Чтобы установить активную среду, используйте activate:

(v1.1) pkg> activate tutorial
[ Info: activating new environment at `/tmp/tutorial/Project.toml`.

Упаковщик сообщает нам, что мы создаём новую среду, и что эта среда будет храниться в каталоге /tmp/tutorial.

Упаковщик также обновил приглашение REPL, чтобы отразить новую активную среду:

(tutorial) pkg>

Мы можем запросить информацию об активной среде, используя status:

(tutorial) pkg> status
    Status `/tmp/tutorial/Project.toml`
   (empty environment)

/tmp/tutorial/Project.toml — это расположение файла проекта активной среды. В файле проекта Упаковщик хранит метаданные для среды. Обратите внимание, что эта новая среда пуста. Давайте добавим пакет и посмотрим:

(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 Упаковщика. Revise.jl может значительно облегчить этот процесс, но настройка выходит за рамки данного руководства.

Julia должна загрузить наш новый код. Давайте проверим его:

julia> Example.plusone(1)
2

Предположим, что мы передумали и решили, что мир ещё не готов к такому элегантному коду. Мы можем сказать Упаковщику, чтобы он перестал использовать локальный клон и вместо этого использовал зарегистрированную версию. Мы делаем это с помощью 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.3.1/stdlib/Pkg/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API