Документация Engee

Работа с пакетами Julia

Пакеты Julia — это организованный набор готовых функций, классов и объектов для решения различных задач. Пакеты Julia можно установить с помощью менеджера пакетов Pkg и использовать в своих проектах. При необходимости более четкого разделения пакетов на пользовательские и системные — используйте EngeePkg.

В Engee работа с пакетами Julia также осуществляется через встроенный менеджер пакетов Pkg с помощью двух инструментов рабочего пространства — командную строку img 41 1 2 и редактор скриптов img41 1.

При работе с большим количеством пакетов удобно использовать редактор скриптов, в котором после вызова Pkg не требуется его повторная инициализация. Командная строка удобна в том случае, если вам привычнее работать с кодом вне интерфейса редактора скриптов и с небольшим количеством пакетов.

Подробное описание работы с менеджером пакетов Pkg можно найти здесь.

Принцип работы с пакетами

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

    • Программирование — раздел Engee с полной документацией по Julia на русском языке.

    • JuliaHub — сервис для поиска по всей зарегистрированной документации пакетов с открытым исходным кодом с возможностью сортировки по тегам и ключевым словам.

    • Julia Packages — онлайн-ресурс, предназначенный для поиска, изучения и просмотра пакетов Julia с возможностью настройки фильтров по категориям, популярности и датам.

    • Julia.jl — главный репозиторий пакетов для языка программирования Julia. Этот репозиторий хранится на платформе GitHub и содержит множество полезных пакетов и инструментов, разработанных сообществом для работы с языком Julia.

  2. Выберите инструмент для работы с пакетами — командная строка или редактор скриптов в зависимости от ваших задач.

  3. Инициализируйте работу с пакетами в Julia, добавив менеджер пакетов Pkg. Синтаксис добавления менеджера отличается в зависимости от выбранного инструмента.

  4. Добавьте пакеты с помощью команды add в ваше окружение, чтобы использовать их в своем проекте. Синтаксис добавления пакетов зависит от выбранного инструмента.

  5. Загрузите пакет в пространство имен и получите доступ к его конкретным элементам с помощью операторов using и import. Вы также можете добавить и собственные пакеты.

  6. При необходимости узнайте статус пакета через status, проверьте, какие пакеты загружены в оперативную память Engee и удалите ненужные через remove или rm (синтаксис зависит от выбранного инструмента).

Подробная информация о работе с пакетами представлена ниже.

Пакеты Julia в командной строке

Чтобы установить новый пакет в командной строке Engee, кликните левой кнопкой мыши в области ввода кода и нажмите закрывающую квадратную скобку ]. Это переключит командную строку на работу с менеджером пакетов. Строка изменит свой вид с engee> на pkg>:

pkg>

В режиме менеджера пакетов используем команду add для добавления пакета:

add Example

Вы можете добавить несколько пакетов одновременно, перечисляя их имена через запятую, например:

add Example, Plots, Pluto

Для удаления пакета используется команда remove или ее сокращенная версия rm:

remove Pluto
Вывод удаления пакета
Updating `/user/.project/Project.toml`
  [c3e4b0f8] - Pluto v0.19.38
    Updating `/user/.project/Manifest.toml`
  [5218b696] - Configurations v0.17.6
  [e2d170a0] - DataValueInterfaces v1.0.0
  [21656369] - ExpressionExplorer v1.0.0
  [55351af7] - ExproniconLite v0.10.5
  [fb4132e2] - FuzzyCompletions v0.5.3
  [ac1192a8] - HypertextLiteral v0.9.5
  [82899510] - IteratorInterfaceExtensions v1.0.0
  [0e77f7df] - LazilyInitializedFields v1.2.2
  [6c6e2e6c] - MIMEs v0.1.4
  [36869731] - Malt v1.1.1
  [99f44e22] - MsgPack v1.2.0
  [c3e4b0f8] - Pluto v0.19.38
  [91cefc8d] - PrecompileSignatures v3.0.3
  [aea7be01] - PrecompileTools v1.2.0
  [2792f1a3] - RegistryInstances v0.1.0
  [3783bdb8] - TableTraits v1.0.1
  [bd369af6] - Tables v1.10.0
  [410a4b4d] - Tricks v0.1.6

При необходимости вы можете удалить несколько пакетов за раз, перечисляя их имена через запятую:

remove Pluto, Plots, Example

Попытка удалить несуществующий пакет выдаст ошибку:

Вывод ошибки
 The following package names could not be resolved:
* Имя пакета (not found in project or manifest)
Для выхода из режима менеджера пакетов pkg> кликните левой кнопкой мыши по области ввода кода и нажмите Backspace. Это вернет вас в первичный вид командной строки engee>.

Пакеты Julia в редакторе скриптов

Чтобы установить новый пакет в интерактивном скрипте Engee, в секции с кодом импортируйте Pkg командой import Pkg, а затем выполните команду Pkg.add("Имя пакета"). Например, секция с кодом для добавления пакета Example будет выглядеть так:

import Pkg
Pkg.add("Example")

После нажатия кнопки Пуск img 1 1 2 на этой секции будет импортирован менеджер пакетов Pkg, и будет установлен пакет Example. Информация о ходе установки пакета отобразится автоматически:

Resolving package versions...
Installed Example ─ v0.5.3
Updating `/user/start/Project.toml`
[7876af07] + Example v0.5.3
Updating `/user/start/Manifest.toml`
[7876af07] + Example v0.5.3

Как и в случае с командной строкой, вы можете добавить несколько пакетов одновременно, перечисляя их имена через запятую и добавляя квадратные скобки для создания массива строк, например:

Pkg.add(["Example", "Plots"])

Для удаления пакета используется команда rm:

Pkg.rm("Example")

Для удаления нескольких пакетов одновременно используется перечисление имен через запятую и квадратные скобки:

Pkg.rm(["Example", "Plots"])

Команда remove не определяется в редакторе скриптов, хотя и используется в командной строке. Попытка вызвать команду в редакторе выдаст ошибку:

`UndefVarError: `remove` not defined`
В редакторе скриптов имя менеджера пакетов Pkg и имена пакетов Julia чувствительны к регистру и должны начинаться с заглавной буквы, в противном случае вы получите сообщение об ошибке.

Статус пакетов

Чтобы узнать, какие пакеты установлены и готовы к использованию, откройте командную строку и выполните следующие действия:

  1. Войдите в менеджер пакетов Pkg через ].

  2. Пропишите команду status:

pkg> status

После этого вы увидите список установленных пакетов и их версию:

Вывод статуса пакетов
pkg> status
Status `/user/.project/Project.toml`
⌅ [c3fe647b] AbstractAlgebra v0.27.8
⌅ [7d9f7c33] Accessors v0.1.27
⌅ [79e6a3ab] Adapt v3.5.0
⌅ [91a5bcdd] Plots v1.36.1
⌃ [c3e4b0f8] Pluto v0.19.36

Символы и означают, что для пакетов есть новые версии:

  • — имеется более новая версия.

  • — имеется более новая версия, но есть конфликты по совместимости с другими пакетами.

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

  1. Введите import Pkg, если не сделали этого ранее.

  2. Введите Pkg.status() для получения статуса пакетов.

Загрузка пакетов

В Julia для загрузки пакетов и предоставления доступа к их конкретным элементам, таким как функции, типы и переменные, используются операторы import и using:

  • using — используется для загрузки всех экспортированных имен из модуля и привязки их к текущему пространству имен. Например:

    using Statistics
    
    x = mean([1, 2, 3, 4, 5])
  • import — используется для выборочного импорта определенных функций или переменных из модуля. Требует указания имени модуля перед именем функции или переменной. Следовательно, функция или переменная, не импортированные явно, не будут доступны в текущей среде. Пример:

    import Statistics
    
    x = Statistics.mean([1, 2, 3, 4, 5])

Рассмотрим преимущества и ограничения операторов:

  • Преимущество using — удобство. Код становится более емким, все функции и переменные из модулей доступны в текущем пространстве имен.

  • Недостаток using — использование using для загрузки больших модулей со множеством функций и переменных может повлиять на производительность и переполнение памяти.

  • Недостаток using — конфликт имен. using может вызвать конфликты имен, если несколько модулей определяют функции или переменные с одинаковым именем.

  • Преимущество import — отсутствие конфликта имен.

  • Преимущество import — сокращение времени компиляции, избегая необходимости компилировать ненужный код.

  • Недостаток import — усложнение кода.

Таким образом, оператор using больше подходит для небольших проектов с упором на удобство. Оператор import больше подходит для крупных проектов с упором на избирательность и контролем над использованием памяти.