Переменные среды
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, такие как [ Аналогично, функции Кроме того, изменение переменных среды во время выполнения может привести к гонкам по данным в остальном безопасном коде. В 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_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 элементы пути разделяются символом |
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
и не загружать ресурсы в составе Julia, просто задайте для переменной среды значение /foo/bar
без двоеточия в конце.
Чтобы добавить хранилище в конец полного списка по умолчанию, включая пользовательское хранилище по умолчанию, используйте начальный символ :
.
export JULIA_DEPOT_PATH=":/foo/bar"
Приведенное выше правило имеет два исключения. Первое — если в качестве значения переменной JULIA_DEPOT_PATH
задана пустая строка, она расширяется до пустого массива DEPOT_PATH
. Другими словами, пустая строка интерпретируется как нульэлементный массив, а не как одноэлементный массив пустой строки. Такое поведение было выбрано для того, чтобы можно было задавать пустой путь к хранилищу с помощью переменной среды.
Второе — если в JULIA_DEPOT_PATH
не указано пользовательское хранилище, то пустая запись расширяется до хранилища по умолчанию, включая пользовательское хранилище. Это позволяет использовать хранилище по умолчанию, как если бы переменная среды не была задана, установив для нее в качестве значения строку :
.
В Windows элементы пути разделяются символом |
|
JULIA_HISTORY
Абсолютный путь REPL.find_hist_file()
к файлу истории REPL. Если значение $JULIA_HISTORY
не задано, REPL.find_hist_file()
по умолчанию использует
$(DEPOT_PATH[1])/logs/repl_history.jl
Pkg.jl
JULIA_CI
Заданное значение true
указывает серверу пакетов, что любые операции с пакетами являются частью системы непрерывной интеграции (CI) для целей сбора статистики использования пакетов.
JULIA_NUM_PRECOMPILE_TASKS
Количество параллельных задач для использования при предварительной компиляции пакетов. См. описание Pkg.precompile
.
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
Использование исполняемого файла |
JULIA_PKGRESOLVE_ACCURACY
Точность сопоставителя пакетов. Это должно быть целое положительное число, по умолчанию используется 1
.
JULIA_PKG_PRESERVE_TIERED_INSTALLED
Изменяет стратегию установки пакетов по умолчанию на Pkg.PRESERVE_TIERED_INSTALLED
, чтобы диспетчер пакетов пытался устанавливать версии пакетов, сохраняя как можно больше версий уже установленных пакетов.
Совместимость: Julia 1.9
Это касается только Julia 1.9 и более поздних версий. |
Сетевой транспорт
JULIA_ALWAYS_VERIFY_HOSTS
Указывает узлы, удостоверения которых должны или не должны проверяться для определенных транспортных уровней. См. описание NetworkOptions.verify_host
.
JULIA_SSL_CA_ROOTS_PATH
Указывает файл или каталог, содержащий корни центра сертификации. См. описание NetworkOptions.ca_roots
link:@id 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
.
Распараллеливание
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 1.5
В Julia 1.5 и более поздних версиях количество потоков также может быть задано при запуске с помощью аргумента командной строки |
Совместимость: Julia 1.7
Для установки значения |
JULIA_THREAD_SLEEP_THRESHOLD
Если задана строка, которая начинается с не зависящей от регистра подстроки "infinite"
, чередующиеся потоки никогда не переходят в спящий режим. В противном случае $JULIA_THREAD_SLEEP_THRESHOLD
интерпретируется как 64-разрядное целое число без знака (uint64_t
) и выделяет (в наносекундах) количество времени, по истечении которого чередующиеся потоки должны перейти в спящий режим.
JULIA_NUM_GC_THREADS
Задает количество потоков, используемых при сборке мусора. Если значение не указано, устанавливается половина числа рабочих потоков.
Совместимость: Julia 1.10
Переменная среды была добавлена в версии 1.10. |
JULIA_IMAGE_THREADS
32-разрядное целое число без знака, задающее количество потоков, используемых при компиляции образа в этом процессе Julia. Значение этой переменной можно проигнорировать для модуля небольшого размера. Если значение не указано, вместо него используется меньшее из значений JULIA_CPU_THREADS
или значение половины количества логических ядер процессора.
JULIA_IMAGE_TIMINGS
Логическое значение, определяющее, будет ли выводиться подробная информация о времени во время компиляции образа. Значение по умолчанию — 0.
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_CPU_TARGET
Изменяет архитектуру целевого компьютера для (предварительной) компиляции образов системы и пакетов. JULIA_CPU_TARGET
влияет только на генерирование образа машинного кода, выводимого в кэш диска. В отличие от --cpu-target
или -C
, параметра командной строки, она не влияет на 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]*)
Задает индекс (на основе 0) базового целевого объекта. Базовый целевой объект — это целевой объект, являющийся основой текущего целевого объекта, т. е. функции, которые не клонируются, будут использовать версию в базовом целевом объекте. Этот вариант позволяет принудительно полностью клонировать базовый целевой объект (как если бы для него было указано
clone_all
), если он не является целевым объектом по умолчанию (0). Индекс может быть только меньше текущего индекса. -
opt_size
Оптимизация по размеру с минимальным влиянием на производительность. Clang/GCC
-Os
. -
min_size
Оптимизация только размера. Clang
-Oz
.
Отладка и профилирование
JULIA_DEBUG
Включает ведение журнала отладки для файла или модуля. Дополнительные сведения: Logging
.
JULIA_PROFILE_PEEK_HEAP_SNAPSHOT
Включает сбор моментального снимка кучи во время выполнения с помощью механизма профилирования peek. См. раздел Активация в ходе выполнения.
JULIA_TIMING_SUBSYSTEMS
Позволяет включать или отключать зоны для конкретного запуска Julia. Например, при задании переменной значения +GC,-INFERENCE
будут включены зоны GC
и отключены зоны INFERENCE
. См. раздел Динамическое включение и отключение зон.
JULIA_GC_ALLOC_PRINT
Если эти переменные среды заданы, они принимают строки, которые необязательно могут начинаться с символа , за которым следует строковая интерполяция разделенного двоеточием списка из трех 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()
.
Если значение переменной среды начинается с символа , интервал между событиями сборки мусора является произвольным.
Эти переменные среды работают только в том случае, если код Julia был скомпилирован с отладкой сборки мусора (то есть если |
JULIA_GC_NO_GENERATIONAL
Если задано значение, отличное от 0
, сборщик мусора Julia никогда не выполняет «быструю очистку» памяти.
Эта переменная среды работает только в том случае, если код Julia был скомпилирован с отладкой сборки мусора (то есть если |
JULIA_GC_WAIT_FOR_DEBUGGER
Если задано значение, отличное от 0
, сборщик мусора Julia будет ждать подключения отладчика вместо его прерывания при возникновении критической ошибки.
Эта переменная среды работает только в том случае, если код Julia был скомпилирован с отладкой сборки мусора (то есть если |
ENABLE_JITPROFILING
Если задано значение, отличное от 0
, компилятор создаст и зарегистрирует прослушивателя событий для JIT-профилирования.
Эта переменная среды работает только в том случае, если код Julia был скомпилирован с поддержкой JIT-профилирования с использованием либо |
-
Intel’s VTune™ Amplifier (
USE_INTEL_JITEVENTS
имеет значение1
в конфигурации сборки), либо -
OProfile (
USE_OPROFILE_JITEVENTS
имеет значение1
в конфигурации сборки). -
Perf (
USE_PERF_JITEVENTS
имеет значение1
в конфигурации сборки). Эта интеграция включена по умолчанию.