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

Переменные среды

Julia можно настроить с помощью ряда переменных среды, задаваемых либо обычным способом для каждой операционной системы, либо переносимым способом в Julia. Если, к примеру, переменной среды JULIA_EDITOR нужно задать значение vim, можно ввести ENV["JULIA_EDITOR"] = "vim" (например, в REPL), чтобы вносить это изменение в каждом конкретном случае, или добавить то же самое в файл конфигурации пользователя ~/.julia/config/startup.jl в домашнем каталоге пользователя, чтобы добиться постоянного эффекта. Текущее значение той же переменной среды можно узнать, проверив ENV["JULIA_EDITOR"].

Переменные среды, используемые в Julia, как привило, начинаются с JULIA. Если InteractiveUtils.versioninfo вызывается с ключевым словом verbose=true, в выводе будут указаны все определенные переменные среды, подходящие для Julia, включая те, которые содержат JULIA в своих именах.

Некоторые переменные, такие как JULIA_NUM_THREADS и JULIA_PROJECT, должны быть заданы до запуска Julia, поэтому добавлять их в ~/.julia/config/startup.jl в процессе запуска слишком поздно. В Bash переменные среды можно задать вручную, выполнив, например, команду export JULIA_NUM_THREADS=4 перед запуском Julia либо добавив ту же команду в ~/.bashrc или ~/.bash_profile для задания переменной при каждом запуске Bash.

Расположения файлов

JULIA_BINDIR

Абсолютный путь к каталогу, содержащему исполняемый файл Julia, который задает глобальную переменную Sys.BINDIR. Если переменная $JULIA_BINDIR не задана, Julia определяет значение Sys.BINDIR во время выполнения.

Сам исполняемый файл — один из

$JULIA_BINDIR/julia
$JULIA_BINDIR/julia-debug

по умолчанию.

Глобальная переменная Base.DATAROOTDIR определяет относительный путь от Sys.BINDIR к каталогу данных, связанному с Julia. Затем путь

$JULIA_BINDIR/$DATAROOTDIR/julia/base

определяет каталог, в котором Julia первоначально ищет исходные файлы (с помощью Base.find_source_file()).

Аналогичным образом глобальная переменная Base.SYSCONFDIR определяет относительный путь к каталогу файла конфигурации. Затем Julia ищет файл startup.jl в

$JULIA_BINDIR/$SYSCONFDIR/julia/startup.jl
$JULIA_BINDIR/../etc/julia/startup.jl

по умолчанию (с помощью Base.load_julia_startup()).

Например, в установке Linux с исполняемым файлом Julia, расположенным в /bin/julia, переменная DATAROOTDIR для ../share и переменная SYSCONFDIR для ../etc JULIA_BINDIR будут иметь значение /bin, путь поиска файла исходного кода

/share/julia/base

и путь поиска глобальной конфигурации

/etc/julia/startup.jl

JULIA_PROJECT

Путь к каталогу, который указывает, какой проект должен быть первоначальным активным проектом. Задание этой переменной среды аналогично указанию параметра запуска --project, но --project имеет больший приоритет. Если переменной задано значение @., Julia пытается найти каталог проекта, содержащий файл Project.toml или JuliaProject.toml из текущего каталога и его родительских каталогов. См. также главу Загрузка кода.

JULIA_PROJECT следует определить до запуска Julia. Определять эту переменную в файле startup.jl в процессе запуска слишком поздно.

JULIA_LOAD_PATH

Переменная среды JULIA_LOAD_PATH используется для заполнения глобальной переменной Julia LOAD_PATH, которая определяет, какие пакеты можно загрузить посредством import и using (см. раздел Загрузка кода).

В отличие от переменной PATH оболочки, пустые записи в JULIA_LOAD_PATH расширяются до значения по умолчанию LOAD_PATH ["@", "@v#.#", "@stdlib"] при заполнении LOAD_PATH. Это позволяет легко добавлять значение загрузки в конец или начало скриптов оболочки независимо от того, задана переменная JULIA_LOAD_PATH или еще нет. Например, чтобы добавить каталог /foo/bar в начало переменной LOAD_PATH, просто выполните

export JULIA_LOAD_PATH="/foo/bar:$JULIA_LOAD_PATH"

Если переменная среды JULIA_LOAD_PATH уже задана, в начало ее старого значения будет добавлено /foo/bar. С другой стороны, если переменная JULIA_LOAD_PATH не задана, ей будет присвоено значение /foo/bar:, что приведет к расширению значения LOAD_PATH до ["/foo/bar", "@", "@v#.#", "@stdlib"]. Если в качестве значения переменной JULIA_LOAD_PATH задана пустая строка, она расширяется до пустого массива LOAD_PATH. Другими словами, пустая строка интерпретируется как нульэлементный массив, а не как одноэлементный массив пустой строки. Такое поведение было выбрано для того, чтобы можно было задавать пустой путь загрузки с помощью переменной среды. Если вам нужен путь загрузки по умолчанию, либо отмените значение переменной среды, либо, если она должна иметь значение, задайте в его качестве строку :.

В Windows элементы пути разделяются символом ;, как и в большинстве списков путей в Windows. Замените : ; в абзаце выше.

JULIA_DEPOT_PATH

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

В отличие от переменной PATH оболочки, но аналогично JULIA_LOAD_PATH, пустые записи в JULIA_DEPOT_PATH расширяются до значения по умолчанию DEPOT_PATH. Это позволяет легко добавлять, добавлять в начало значение пути к хранилищу в скриптах оболочки независимо от того, задана ли переменная JULIA_DEPOT_PATH или еще нет. Например, чтобы добавить каталог /foo/bar в начало переменной DEPOT_PATH, просто выполните

export JULIA_DEPOT_PATH="/foo/bar:$JULIA_DEPOT_PATH"

Если переменная среды JULIA_DEPOT_PATH уже задана, в начало ее старого значения будет добавлено /foo/bar. С другой стороны, если переменная JULIA_DEPOT_PATH не задана, ей будет присвоено значение /foo/bar:, что приведет к добавлению /foo/bar в начало пути к хранилищу по умолчанию. Если в качестве значения переменной JULIA_DEPOT_PATH задана пустая строка, она расширяется до пустого массива DEPOT_PATH. Другими словами, пустая строка интерпретируется как нульэлементный массив, а не как одноэлементный массив пустой строки. Такое поведение было выбрано для того, чтобы можно было задавать пустой путь к хранилищу с помощью переменной среды. Если вам нужен путь к хранилищу по умолчанию, либо отмените значение переменной среды, либо, если она должна иметь значение, задайте в его качестве строку :.

В Windows элементы пути разделяются символом ;, как и в большинстве списков путей в Windows. Замените : ; в абзаце выше.

JULIA_DEPOT_PATH следует определить до запуска Julia. Определять эту переменную в файле startup.jl в процессе запуска слишком поздно. В этом случае можно вместо этого напрямую изменить массив DEPOT_PATH, который заполняется из переменной среды.

JULIA_HISTORY

Абсолютный путь REPL.find_hist_file() к файлу истории REPL. Если значение $JULIA_HISTORY не задано, REPL.find_hist_file() по умолчанию использует

$(DEPOT_PATH[1])/logs/repl_history.jl

JULIA_MAX_NUM_PRECOMPILE_FILES

Задает максимальное количество различных экземпляров одного пакета, которые будут храниться в кэше предварительной компиляции (по умолчанию — 10).

JULIA_VERBOSE_LINKING

Если задано значение true, во время предварительной компиляции будут выводиться команды компоновщика.

Pkg.jl

JULIA_CI

Заданное значение true указывает серверу пакетов, что любые операции с пакетами являются частью системы непрерывной интеграции (CI) для целей сбора статистики использования пакетов.

JULIA_NUM_PRECOMPILE_TASKS

Количество параллельных задач для использования при предварительной компиляции пакетов. См. описание Pkg.precompile.

JULIA_PKG_DEVDIR

Каталог по умолчанию, используемый Pkg.develop для скачивания пакетов.

JULIA_PKG_IGNORE_HASHES

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

Совместимость: Julia 1.6

Поддерживается в Julia 1.6 и более поздних версиях.

JULIA_PKG_OFFLINE

Если задано значение true, будет включен автономный режим: см. описание Pkg.offline.

Совместимость: Julia 1.5

Для автономного режима Pkg требуется Julia 1.5 или более поздняя версия.

JULIA_PKG_PRECOMPILE_AUTO

Если задано значение 0, будет отключена автоматическая предварительная компиляция, выполняемая действиями пакета, что приведет к изменению манифеста. См. описание Pkg.precompile.

JULIA_PKG_SERVER

Указывает URL-адрес используемого реестра пакетов. По умолчанию Pkg использует https://pkg.julialang.org для извлечения пакетов Julia. Кроме того, можно отключить использование протокола PkgServer и получать доступ к пакетам непосредственно с их узлов (GitHub, GitLab и т. д.), задав export JULIA_PKG_SERVER=""

JULIA_PKG_SERVER_REGISTRY_PREFERENCE

Указывает предпочтительный тип реестра. В настоящее время поддерживаются значения conservative (по умолчанию), что означает, что будут публиковаться только те ресурсы, которые были обработаны сервером хранилищ (и, таким образом, имеют более высокую вероятность доступа с PkgServers), в то время как eager будет публиковать реестры, ресурсы которых необязательно были обработаны серверами хранилищ. Пользователи, находящиеся за ограничительными брандмауэрами, которые не разрешают скачивание с произвольных серверов, не должны использовать тип eager.

Совместимость: Julia 1.7

Это касается только Julia 1.7 и более поздних версий.

JULIA_PKG_UNPACK_REGISTRY

Если задано значение true, реестр будет распакован, а не сохранен в виде сжатого архива Tarball.

Совместимость: Julia 1.7

Это касается только Julia 1.7 и более поздних версий. В более ранних версиях всегда выполняется распаковка реестра.

JULIA_PKG_USE_CLI_GIT

Если задано значение true, операции Pkg, использующие протокол git, будут работать с внешним исполняемым файлом git, а не с библиотекой libgit2 по умолчанию.

Совместимость: Julia 1.7

Использование исполняемого файла git поддерживается только в Julia 1.7 и более поздних версиях.

JULIA_PKGRESOLVE_ACCURACY

Точность сопоставителя пакетов. Это должно быть целое положительное число, по умолчанию используется 1.

Сетевой транспорт

JULIA_NO_VERIFY_HOSTS / JULIA_SSL_NO_VERIFY_HOSTS / JULIA_SSH_NO_VERIFY_HOSTS / JULIA_ALWAYS_VERIFY_HOSTS

Указывает узлы, удостоверения которых должны или не должны проверяться для определенных транспортных уровней. См. описание NetworkOptions.verify_host.

JULIA_SSL_CA_ROOTS_PATH

Указывает файл или каталог, содержащий корни центра сертификации. См. описание NetworkOptions.ca_roots.

Внешние приложения

JULIA_SHELL

Абсолютный путь к оболочке, с помощью которой Julia должна выполнять внешние команды (с помощью Base.repl_cmd()). По умолчанию используется переменная среды $SHELL, а если переменная $SHELL не задана, используется /bin/sh.

В Windows эта переменная среды игнорируется, и внешние команды выполняются напрямую.

JULIA_EDITOR

Редактор, возвращаемый InteractiveUtils.editor() и используемый, например, в методе InteractiveUtils.edit, ссылающемся на команду предпочтительного редактора, например vim.

$JULIA_EDITOR имеет приоритет над переменной $VISUAL, которая, в свою очередь, превалирует над $EDITOR. Если ни одна из этих переменных среды не задана, редактор считается open в Windows и OS X, или /etc/alternatives/editor, если он существует, или emacs в противном случае.

Чтобы использовать Visual Studio Code в Windows, задайте переменной $JULIA_EDITOR значение code.cmd.

Распараллеливание

JULIA_CPU_THREADS

Переопределяет глобальную переменную Base.Sys.CPU_THREADS, количество доступных логических ядер ЦП.

JULIA_WORKER_TIMEOUT

Тип Float64, который задает значение для Distributed.worker_timeout() (по умолчанию используется 60.0). Эта функция задает количество секунд, в течение которых рабочий процесс будет ждать, пока главный процесс установит соединение, прежде чем завершиться.

JULIA_NUM_THREADS

64-разрядное целое число без знака (uint64_t), задающее максимальное количество потоков, доступных для Julia. Если значение $JULIA_NUM_THREADS не является положительным или не задано, или если количество потоков ЦП не может быть определено с помощью системных вызовов, количество потоков устанавливается равным 1.

Если для $JULIA_NUM_THREADS задано значение auto, количество потоков будет установлено равным количеству потоков процессора.

JULIA_NUM_THREADS следует определить до запуска Julia. Определять эту переменную в файле startup.jl в процессе запуска слишком поздно.

Совместимость: Julia 1.5

В Julia 1.5 и более поздних версиях количество потоков также может быть задано при запуске с помощью аргумента командной строки -t (--threads).

Совместимость: Julia 1.7

Для установки значения auto для переменной $JULIA_NUM_THREADS требуется Julia 1.7 или более поздние версии.

JULIA_THREAD_SLEEP_THRESHOLD

Если задана строка, которая начинается с независящей от регистра подстроки "infinite", чередующиеся потоки никогда не переходят в спящий режим. В противном случае $JULIA_THREAD_SLEEP_THRESHOLD интерпретируется как 64-разрядное целое число без знака (uint64_t) и выделяет (в наносекундах) количество времени, по истечении которого чередующиеся потоки должны перейти в спящий режим.

JULIA_EXCLUSIVE

Если установлено значение, отличное от 0, политика потоков Julia согласована с выполнением потоков на выделенном компьютере: главный поток находится в подсистеме proc 0, а потоки группируются по схожести. В противном случае Julia передает управление политикой потоков операционной системе.

Форматирование REPL

Переменные среды, определяющие, каким образом вывод REPL должен быть отформатирован в терминале. Как правило, в качестве значений этих переменных должны быть заданы escape-последовательности ANSI. Julia предоставляет высокоуровневый интерфейс с большей частью того же функционала. См. раздел в главе Julia REPL.

JULIA_ERROR_COLOR

Форматирование Base.error_color() (по умолчанию: светло-красный цвет, "\033[91m"), применяемое к ошибкам в терминале.

JULIA_WARN_COLOR

Форматирование Base.warn_color() (по умолчанию: желтый цвет, "\033[93m"), применяемое к предупреждениям в терминале.

JULIA_INFO_COLOR

Форматирование Base.info_color() (по умолчанию: бирюзовый цвет, "\033[36m"), применяемое к информационным сообщениям в терминале.

JULIA_INPUT_COLOR

Форматирование Base.input_color() (по умолчанию: нормальное состояние, "\033[0m"), применяемое к входным данным в терминале.

JULIA_ANSWER_COLOR

Форматирование Base.answer_color() (по умолчанию: нормальное состояние, "\033[0m"), применяемое к выводу в терминале.

Отладка и профилирование

JULIA_DEBUG

Включает ведение журнала отладки для файла или модуля. Дополнительные сведения: Logging.

JULIA_GC_ALLOC_POOL, JULIA_GC_ALLOC_OTHER, JULIA_GC_ALLOC_PRINT

Если эти переменные среды заданы, они принимают строки, которые необязательно могут начинаться с символа 'r', за которым следует строковая интерполяция разделенного двоеточием списка из трех 64-разрядных целых чисел со знаком (int64_t). Эта тройка целых чисел a:b:c представляет собой арифметическую последовательность a, a + b, a + 2*b …​ c.

  • Если jl_gc_pool_alloc() вызывается в n-й раз и n принадлежит арифметической последовательности, представленной $JULIA_GC_ALLOC_POOL, принудительно запускается сборка мусора.

  • Если maybe_collect() вызывается в n-й раз и n принадлежит арифметической последовательности, представленной $JULIA_GC_ALLOC_OTHER, принудительно запускается сборка мусора.

  • Если jl_gc_collect() вызывается в n-й раз и n принадлежит арифметической последовательности, представленной $JULIA_GC_ALLOC_PRINT, выводятся значения количества вызовов jl_gc_pool_alloc() и maybe_collect().

Если значение переменной среды начинается с символа 'r', интервал между событиями сборки мусора является произвольным.

Эти переменные среды работают только в том случае, если код Julia был скомпилирован с отладкой сборки мусора (то есть если WITH_GC_DEBUG_ENV имеет значение 1 в конфигурации сборки).

JULIA_GC_NO_GENERATIONAL

Если задано значение, отличное от 0, сборщик мусора Julia никогда не выполняет «быструю очистку» памяти.

Эта переменная среды работает только в том случае, если код Julia был скомпилирован с отладкой сборки мусора (то есть если WITH_GC_DEBUG_ENV имеет значение 1 в конфигурации сборки).

JULIA_GC_WAIT_FOR_DEBUGGER

Если задано значение, отличное от 0, сборщик мусора Julia будет ждать подключения отладчика вместо его прерывания при возникновении критической ошибки.

Эта переменная среды работает только в том случае, если код Julia был скомпилирован с отладкой сборки мусора (то есть если WITH_GC_DEBUG_ENV имеет значение 1 в конфигурации сборки).

ENABLE_JITPROFILING

Если задано значение, отличное от 0, компилятор создаст и зарегистрирует прослушивателя событий для JIT-профилирования.

Эта переменная среды работает только в том случае, если код Julia был скомпилирован с поддержкой JIT-профилирования с использованием либо

  • Intel’s VTune™ Amplifier (USE_INTEL_JITEVENTS имеет значение 1 в конфигурации сборки), либо

  • OProfile (USE_OPROFILE_JITEVENTS имеет значение 1 в конфигурации сборки).

  • Perf (USE_PERF_JITEVENTS имеет значение 1 в конфигурации сборки). Эта интеграция включена по умолчанию.

ENABLE_GDBLISTENER

Если задано значение, отличное от 0, включает регистрацию GDB кода Julia в сборках выпусков. В отладочных сборках Julia регистрация всегда включена. Рекомендуется использовать с -g 2.

JULIA_LLVM_ARGS

Аргументы, передаваемые бэкенду LLVM.