Environment Variables
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/config/startup.jl
.
Одна из причин заключается в том, что некоторые переменные языка Julia, такие как JULIA_NUM_THREADS
и JULIA_PROJECT
, должны быть установлены до начала работы Julia.
Аналогично, функции __init__()
пользовательских модулей в sysimage (через PackageCompiler) выполняются до startup.jl
, поэтому установка переменных окружения в startup.jl
может быть слишком поздно для пользовательского кода.
Кроме того, изменение переменных окружения во время выполнения может привести к гонкам данных в иначе безобидном коде.
В Bash переменные окружения могут быть установлены вручную, запустив, например, export JULIA_NUM_THREADS=4
перед запуском Julia, или добавив ту же команду в ~/.bashrc
или ~/.bash_profile
, чтобы устанавливать переменную каждый раз при запуске Bash.
File locations
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
из текущей директории и её родительских директорий. См. также главу о Code Loading.
JULIA_PROJECT
должен быть определен перед началом julia; определение его в startup.jl
слишком поздно в процессе запуска.
JULIA_LOAD_PATH
Переменная окружения JULIA_LOAD_PATH
используется для заполнения глобальной переменной Julia LOAD_PATH
, которая определяет, какие пакеты могут быть загружены с помощью import
и using
(см. Code Loading).
В отличие от переменной оболочки PATH
, пустые записи в JULIA_LOAD_PATH
расширяются до значения по умолчанию LOAD_PATH
, ["@", "@v#.#", "@stdlib"]
, при заполнении LOAD_PATH
. Это позволяет легко добавлять, вставлять и т.д. значение пути загрузки в скриптах оболочки, независимо от того, установлена ли 4d61726b646f776e2e436f64652822222c20224a554c49415f4c4f41445f504154482229_40726566204a554c49415f4c4f41445f50415448
или нет. Например, чтобы вставить директорию /foo/bar
в LOAD_PATH
, просто выполните
export JULIA_LOAD_PATH="/foo/bar:$JULIA_LOAD_PATH"
Если переменная окружения JULIA_LOAD_PATH
уже установлена, её старое значение будет дополнено /foo/bar
. С другой стороны, если 4d61726b646f776e2e436f64652822222c20224a554c49415f4c4f41445f504154482229_40726566204a554c49415f4c4f41445f50415448
не установлена, то она будет установлена в /foo/bar:
, что расширится до значения LOAD_PATH
["/foo/bar", "@", "@v#.#", "@stdlib"]
. Если 4d61726b646f776e2e436f64652822222c20224a554c49415f4c4f41445f504154482229_40726566204a554c49415f4c4f41445f50415448
установлена в пустую строку, она расширяется в пустой массив LOAD_PATH
. Другими словами, пустая строка интерпретируется как массив с нулевым количеством элементов, а не как массив с одним элементом — пустой строкой. Это поведение было выбрано, чтобы можно было установить пустой путь загрузки через переменную окружения. Если вы хотите использовать путь загрузки по умолчанию, либо сбросьте переменную окружения, либо, если она должна иметь значение, установите её в строку :
.
На Windows элементы пути разделяются символом ;
, как и в большинстве списков путей на Windows. Замените :
на ;
в приведенном выше абзаце.
JULIA_DEPOT_PATH
Переменная окружения JULIA_DEPOT_PATH
используется для заполнения глобальной переменной Julia DEPOT_PATH
, которая контролирует, где менеджер пакетов, а также механизмы загрузки кода Julia, ищут реестры пакетов, установленные пакеты, именованные окружения, клонированные репозитории, кэшированные скомпилированные образы пакетов, файлы конфигурации и расположение файла истории REPL по умолчанию.
В отличие от переменной оболочки PATH
, но аналогично JULIA_LOAD_PATH
, пустые записи в JULIA_DEPOT_PATH
имеют особое поведение:
- В конце он расширяется до значения по умолчанию
DEPOT_PATH
, исключая пользовательский депо. - В начале он расширяется до значения по умолчанию
DEPOT_PATH
, включая пользовательский депо.
Это позволяет легко переопределить пользовательский депо, при этом сохраняя доступ к ресурсам, которые поставляются с Julia, таким как файлы кэша, артефакты и т. д. Например, чтобы переключить пользовательский депо на /foo/bar
, используйте завершающий :
.
export JULIA_DEPOT_PATH="/foo/bar:"
Все операции с пакетами, такие как клонирование реестров или установка пакетов, теперь будут записываться в /foo/bar
, но поскольку пустая запись расширяется до стандартного системного депо, все встроенные ресурсы по-прежнему будут доступны. Если вы действительно хотите использовать только депо в /foo/bar
и не загружать никакие встроенные ресурсы, просто установите переменную окружения в /foo/bar
без завершающего двоеточия.
Чтобы добавить депо в конец полного списка по умолчанию, включая депо пользователя по умолчанию, используйте ведущий :
export JULIA_DEPOT_PATH=":/foo/bar"
Существуют два исключения из вышеуказанного правила. Во-первых, если JULIA_DEPOT_PATH
установлено в пустую строку, оно расширяется в пустой массив DEPOT_PATH
. Другими словами, пустая строка интерпретируется как массив с нулевым количеством элементов, а не как массив с одним элементом, содержащим пустую строку. Это поведение было выбрано для того, чтобы можно было установить пустой путь к депо через переменную окружения.
Во-вторых, если пользовательский депо не указан в JULIA_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 issue #2317 для получения дополнительной информации.
Это поддерживается только в Julia 1.6 и выше.
JULIA_PKG_OFFLINE
Если установлено значение true
, это включит офлайн-режим: см. Pkg.offline
.
Офлайн-режим 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_PKG_UNPACK_REGISTRY
Если установлено значение true
, это распакует реестр вместо того, чтобы хранить его в виде сжатого tarball.
Это касается только Julia 1.7 и выше. Более ранние версии всегда будут распаковывать реестр.
JULIA_PKG_USE_CLI_GIT
Если установлено значение true
, операции Pkg, которые используют протокол git, будут использовать внешний исполняемый файл git
вместо библиотеки libgit2 по умолчанию.
Использование исполняемого файла git
поддерживается только в Julia 1.7 и выше.
JULIA_PKGRESOLVE_ACCURACY
Точность разрешателя пакетов. Это должно быть положительное целое число, по умолчанию 1
.
JULIA_PKG_PRESERVE_TIERED_INSTALLED
Измените стратегию установки пакетов по умолчанию на Pkg.PRESERVE_TIERED_INSTALLED
, чтобы менеджер пакетов пытался устанавливать версии пакетов, сохраняя как можно больше версий уже установленных пакетов.
Это касается только Julia 1.9 и выше.
Network transport
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
External applications
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
.
Parallelization
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 и выше количество потоков также можно указать при запуске с помощью аргумента командной строки -t
/--threads
.
Значение auto
для $JULIA_NUM_THREADS
требует Julia 1.7 или выше.
JULIA_THREAD_SLEEP_THRESHOLD
Если установлено значение строки, которое начинается с нечувствительной к регистру подстроки "infinite"
, то вращающиеся потоки никогда не спят. В противном случае $JULIA_THREAD_SLEEP_THRESHOLD
интерпретируется как беззнаковое 64-битное целое число (uint64_t
) и указывает, в наносекундах, количество времени, после которого вращающиеся потоки должны спать.
JULIA_NUM_GC_THREADS
Устанавливает количество потоков, используемых сборщиком мусора. Если не указано, устанавливается в половину количества рабочих потоков.
Переменная окружения была добавлена в 1.10
JULIA_IMAGE_THREADS
Беззнаковое 32-битное целое число, которое устанавливает количество потоков, используемых для компиляции изображений в этом процессе Julia. Значение этой переменной может быть проигнорировано, если модуль является небольшим. Если не указано, используется меньшее из значения JULIA_CPU_THREADS
или половины количества логических ядер ЦП.
JULIA_IMAGE_TIMINGS
Булевое значение, которое определяет, будет ли печататься подробная информация о времени во время компиляции изображения. По умолчанию 0.
JULIA_EXCLUSIVE
Если установлено любое значение, кроме 0
, то политика потоков Julia соответствует работе на выделенной машине: главный поток находится на процессоре 0, и потоки имеют привязку. В противном случае Julia позволяет операционной системе управлять политикой потоков.
REPL formatting
Переменные окружения, которые определяют, как вывод REPL должен форматироваться в терминале. Обычно эти переменные должны быть установлены в ANSI terminal escape sequences. 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()
(по умолчанию: normal, "\033[0m"
), которое ввод должен иметь в терминале.
JULIA_ANSWER_COLOR
Форматирование Base.answer_color()
(по умолчанию: normal, "\033[0m"
), которое должно быть в выводе в терминале.
System and Package Image Building
JULIA_CPU_TARGET
Измените целевую архитектуру машины для (пред)компиляции system и package images. JULIA_CPU_TARGET
влияет только на генерацию образа машинного кода, который выводится в кэш на диске. В отличие от --cpu-target
или -C
, command line option, он не влияет на генерацию кода в режиме just-in-time (JIT) в сессии Julia, где машинный код хранится только в памяти.
Допустимые значения для JULIA_CPU_TARGET
можно получить, выполнив julia -C help
.
Настройка JULIA_CPU_TARGET
важна для гетерогенных вычислительных систем, где могут присутствовать процессоры различных типов или характеристик. Это часто встречается в кластерах высокопроизводительных вычислений (HPC), поскольку компонентные узлы могут использовать различные процессоры.
Строка целевого процессора — это список строк, разделенных ;
, каждая строка начинается с названия процессора или архитектуры и за ней следует необязательный список функций, разделенных ,
. Название процессора generic
или пустое название означает базовый набор необходимых функций целевой ISA, который как минимум соответствует архитектуре, с которой скомпилирован C/C++ рантайм. Каждая строка интерпретируется LLVM.
Поддерживаются несколько специальных функций:
clone_all
Это заставляет целевой объект иметь все функции, клонированные в sysimg. Когда используется в отрицательной форме (т.е.
-clone_all
), это отключает полное клонирование, которое включено по умолчанию для определенных целевых объектов.base([0-9]*)
Это указывает на индекс базовой цели (с нуля). Базовая цель — это цель, на основе которой основана текущая цель, т.е. функции, которые не клонируются, будут использовать версию из базовой цели. Эта опция приводит к тому, что базовая цель будет полностью клонирована (как если бы для нее была указана
clone_all
), если она не является целевой по умолчанию (0). Индекс может быть только меньше текущего индекса.opt_size
Оптимизируйте для размера с минимальным влиянием на производительность.
-Os
Clang/GCC.min_size
Оптимизировать только для размера.
-Oz
Clang.
Debugging and profiling
JULIA_DEBUG
Включите отладочный логгирование для файла или модуля, смотрите Logging
для получения дополнительной информации.
JULIA_PROFILE_PEEK_HEAP_SNAPSHOT
Включите сбор снимка кучи во время выполнения с помощью механизма профилирования peek. См. Triggered During Execution.
JULIA_TIMING_SUBSYSTEMS
Позволяет вам включать или отключать зоны для конкретного запуска Julia. Например, установка переменной в +GC,-INFERENCE
включит зоны GC
и отключит зоны INFERENCE
. См. Dynamically Enabling and Disabling Zones.
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's 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.
JULIA_FALLBACK_REPL
Принуждает использовать резервный REPL вместо REPL.jl.