Spec-Zone.ru › Julia 1.5

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

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

Абсолютный путь к каталогу, содержащему исполняемый файл 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

Имя каталога активного проекта

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

JULIA_PROJECT должно быть определено до запуска julia; его определение в startup.jl происходит слишком поздно на этапе запуска.

Путь загрузки пакетов

Переменная среды 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. Другими словами, пустая строка интерпретируется как массив с нулевыми элементами, а не как массив с одним элементом, содержащим пустую строку. Это поведение было выбрано для возможности установки пустого пути загрузки через переменную среды. Если вам нужен путь загрузки по умолчанию, либо снимите установку переменной среды, либо, если это необходимо, установите значение :.

Путь к репозиториям пакетов

Переменная среды 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. Другими словами, пустая строка интерпретируется как массив с нулевыми элементами, а не как массив с одним элементом, содержащим пустую строку. Это поведение было выбрано для возможности установки пустого пути репозитория через переменную среды. Если вам нужен стандартный путь репозитория, либо снимите установку переменной среды, либо, если это необходимо, установите значение :.

Файл истории REPL

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

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

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

Оболочка по умолчанию

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

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

Редактор по умолчанию

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

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

Параллелизация

Число потоков процессора

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

Таймаут процесса исполнителя

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

Максимальное число потоков

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

JULIA_NUM_THREADS должно быть определено до запуска julia; его определение в startup.jl происходит слишком поздно на этапе запуска.

В Julia 1.5 и выше количество потоков также можно задать при запуске, используя аргумент командной строки -t/--threads.

Пороговое время сна потоков

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

Исключительный режим

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

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

Переменные среды, определяющие, как REPL-вывод должен быть отформатирован в терминале. В целом, эти переменные должны быть установлены в ANSI-последовательности для терминалов. Julia предоставляет интерфейс высокого уровня с большей частью той же функциональности; см. раздел о The 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_STACKFRAME_LINEINFO_COLOR

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

JULIA_STACKFRAME_FUNCTION_COLOR

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

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

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.

  • Если это n-й раз, когда jl_gc_pool_alloc() был вызван, и n принадлежит арифметической последовательности, представленной $JULIA_GC_ALLOC_POOL, сборка мусора принудительно выполняется.
  • Если это n-й раз, когда maybe_collect() был вызван, и n принадлежит арифметической последовательности, представленной $JULIA_GC_ALLOC_OTHER, сборка мусора принудительно выполняется.
  • Если это n-й раз, когда jl_gc_collect() был вызван, и 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 (just-in-time).

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

  • Инструмент Intel VTune™ Amplifier (USE_INTEL_JITEVENTS установлено в 1 в конфигурации сборки), или
  • OProfile (USE_OPROFILE_JITEVENTS установлено в 1 в конфигурации сборки).

JULIA_LLVM_ARGS

Аргументы, которые необходимо передать обратному конфигуратору LLVM.

© 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/manual/environment-variables/

Spec-Zone.ru

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