Pkg
Pkg — это встроенный менеджер пакетов Julia, который выполняет такие операции, как установка, обновление и удаление пакетов.
Далее следует очень краткое введение в Pkg. Для получения дополнительной информации о файлах |
Ниже представлен краткий обзор Pkg, диспетчера пакетов Julia. Этот обзор должен помочь новым пользователям познакомиться с функциями Pkg.
Диспетчер Pkg поставляется со своей средой командной строки REPL. Чтобы войти в REPL для Pkg, нажмите в REPL Julia клавишу ]
. Вернуться в REPL Julia можно, нажав Backspace или ^C.
В этом руководстве команды Pkg выполняются в REPL Pkg. Для неинтерактивной работы рекомендуем использовать API-интерфейс Pkg. Полная документация к API Pkg приведена в документации Pkg в разделе Справка по API. |
При входе в 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 обеспечивает значительные преимущества по сравнению с традиционными диспетчерами, позволяя организовывать зависимости в среды.
Возможно, вы заметили, что в приглашении REPL указано (v1.1)
. Это сообщает нам, что версия 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
и хотим добавить туда новые функции. Как нам изменить исходный код? Мы можем настроить git-клон пакета Example
, используя develop
.
(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 только один раз. Если вы уже выполнили |
Среда 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
обладает значительно большими возможностями по работе с пакетами. Читайте полное руководство, чтобы узнать больше!