Spec-Zone.ru › Julia 1.6

Переменные окружения

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

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_HISTORY

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

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

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

JULIA_SHELL

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

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

JULIA_EDITOR

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

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

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

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 должна быть определена до запуска julia; определение её в startup.jl происходит слишком поздно в процессе запуска.

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

JULIA_THREAD_SLEEP_THRESHOLD

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

JULIA_EXCLUSIVE

Если установлено значение, отличное от 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_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, компилятор создаст и зарегистрирует обработчик событий для профилирования «just-in-time» (JIT).

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

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

ENABLE_GDBLISTENER

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

JULIA_LLVM_ARGS

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

© 2009–2021 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.6.0/manual/environment-variables/

Spec-Zone.ru

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