Spec-Zone.ru › Julia 1.4

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

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

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

JULIA_HISTORY

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

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

JULIA_PKGRESOLVE_ACCURACY

Положительное значение Int, которое определяет, сколько времени подпрограмма max-sum MaxSum.maxsum() решателя зависимостей пакетов будет тратить на попытку удовлетворения ограничений, прежде чем сдаться: это значение по умолчанию 1, и большие значения соответствуют большему времени.

Предположим, что значение $JULIA_PKGRESOLVE_ACCURACY равно n. Тогда

  • число итераций до децимации равно 20*n,
  • число итераций между шагами децимации равно 10*n, и
  • на шагах децимации максимум один из каждых 20*n пакетов подвергается децимации.

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

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 в противном случае.

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

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 превышает количество доступных физических ядер процессора, количество потоков устанавливается в количество ядер. Если $JULIA_NUM_THREADS не является положительным или не установлено, или количество ядер процессора не может быть определено через системные вызовы, то количество потоков устанавливается в 1.

END_OF_DOCUMENT_MARKER

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

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_STACKFRAME_LINEINFO_COLOR

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

JULIA_STACKFRAME_FUNCTION_COLOR

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

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

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-профилирования, используя:

  • Интеллектуальный 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.4.2/manual/environment-variables/

Spec-Zone.ru

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