Engee 文档

环境变量

Julia可以使用许多环境变量进行配置,可以按照每个操作系统的常用方式进行设置,也可以在Julia中以可移植的方式进行设置。 例如,如果环境变量 'JULIA_EDITOR'您需要将值设置为’vim',您可以输入’ENV["JULIA_EDITOR"]="vim"`(例如,在REPL中)根据具体情况进行此更改,或者将其添加到用户的配置文件`~/中。朱莉娅/配置/启动。jl`在用户的主目录下实现永久的效果。 通过检查`ENV["JULIA_EDITOR"]`可以找到相同环境变量的当前值。

Julia中使用的环境变量通常以’JULIA’开头。 如果 'InteractiveUtils.versioninfo'使用关键字`verbose=true’调用,输出将包含所有适用于Julia的已定义环境变量,包括那些在其名称中包含`JULIA`的环境变量。

建议避免在运行时更改环境变量,例如在`~/内。朱莉娅/配置/启动。jl'。

一个原因是一些Julia语言变量,如[JULIA_NUM_THREADS'](environment-variables.md#JULIA_NUM_THREADS)和[`JULIA_PROJECT](environment-variables.md#JULIA_PROJECT),必须在Julia启动之前设置。

同样,函数'__init__()在sysimage中创建自定义模块(通过PackageCompiler)应该在启动之前完成。jl`,所以在`startup中设置环境变量。jl’对于自定义代码来说可能为时已晚。

此外,在运行时更改环境变量可能会导致其他安全代码中的数据竞争。

在Bash中,可以通过在运行Julia之前运行命令`export JULIA_NUM_THREADS=4`来手动设置环境变量,或者通过将相同的命令添加到`/。bashrc’或'/。bash_profile’用于在每次启动Bash时设置变量。

文件位置

`JULIA_BINDIR'

包含Julia可执行文件的目录的绝对路径,它设置全局变量 'Sys.BINDIR'。 如果变量’JUL JULIA_BINDIR`未设置,Julia将确定’Sys的值。运行时的BINDIR`。

可执行文件本身是

$JULIA_BINDIR/julia
$JULIA_BINDIR/julia-debug

默认情况下。

的全局变量’基。DATAROOTDIR’定义从’Sys的相对路径。BINDIR’到与Julia关联的数据目录。 然后路径

$JULIA_BINDIR/$DATAROOTDIR/julia/base

定义Julia最初搜索源文件的目录(使用’Base.find_source_file()`)。

类似地,全局变量’Base。SYSCONFDIR’定义配置文件的相对目录路径。 Julia然后搜索启动。jl文件在

$JULIA_BINDIR/$SYSCONFDIR/julia/startup.jl
$JULIA_BINDIR/../etc/julia/startup.jl

默认情况下(使用’Base.load_julia_startup()`)。

例如,在Linux安装中,Julia可执行文件位于`/bin/julia`中,变量`DATAROOTDIR`for`。./share’和变量`SYSCONFDIR`for`。./等` 'JULIA_BINDIR'将具有值`/bin',源代码文件的搜索路径

/share/julia/base

和全局配置搜索路径

/etc/julia/startup.jl

`JULIA_PROJECT'

指定哪个项目应该是初始活动项目的目录的路径。 设置此环境变量类似于指定启动参数'--project`,但'--project’具有更高的优先级。 如果变量设置为'@。'(注意末尾的点),Julia试图找到包含文件`Project的项目目录。toml’或’JuliaProject.toml’来自当前目录及其父目录。 另见章节 代码下载

`JULIA_PROJECT'应该在Julia启动之前定义。 在启动中定义此变量为时已晚。启动期间的jl文件。

'JULIA_LOAD_PATH`

环境变量 'JULIA_LOAD_PATH'用于填充Julia全局变量 'LOAD_PATH',它确定哪些包可以通过"导入"和"使用"加载(参见章节 代码下载)。

与shell的"PATH"变量不同,在 'LOAD_LOAD_PATH'展开为`LOAD_PATH`"@","@v#的默认值。#","@stdlib"]填写’LOAD_PATH’时。 这使得无论是否设置变量,都可以轻松地将load值添加到shell脚本的末尾或开头。 'JULIA_LOAD_PATH'或者还没有。 例如,要将目录/foo/bar`添加到’LOAD_PATH’变量的开头,只需运行

export JULIA_LOAD_PATH="/foo/bar:$JULIA_LOAD_PATH"

如果环境变量是 'JULIA_LOAD_PATH`已经被设置,并且'/foo/bar’将被添加到其旧值的开头。 另一方面,如果变量 'LOAD_PATH'未设置,它将被设置为'/foo/bar:`,这将扩展`LOAD_PATH`的值为`["/foo/bar","@","@v#。#","@stdlib"]'。 如果作为变量的值 'JULIA_LOAD_PATH`一个空字符串被设置,它扩展为一个空数组’LOAD_PATH'。 换句话说,空字符串被解释为零元素数组,而不是空字符串的一元素数组。 选择此行为是为了使用环境变量设置空引导路径。 如果您需要默认下载路径,请取消环境变量的值,或者,如果它应该有一个值,请将字符串`:`设置为其值。

在Windows中,路径元素由`;`字符分隔,就像在大多数Windows路径列表中一样。 将上一段中的`:`改为`;`。

`JULIA_DEPOT_PATH'

环境变量 'JULIA_DEPOT_PATH'用于填充Julia全局变量 'DEPOT_PATH',它控制包管理器和Julia代码下载机制搜索包注册表、已安装包、命名环境、存储库克隆、缓存的编译包映像、配置文件和REPL历史记录文件的默认位置的位置。

与shell的`PATH`变量不同,但同样 `JULIA_LOAD_PATH',空条目 'JULIA_DEPOT_PATH'有一个特殊的行为。

  • 最后,它扩展为`DEPOT_PATH’的默认值,不包括自定义存储。

  • 在开始时,它扩展到`DEPOT_PATH`的默认值,_including_自定义存储。 这使得重新定义用户存储变得容易,同时保持对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'未指定用户存储,则将空记录扩展到默认存储_including_用户存储。 这允许您使用默认存储,就好像环境变量没有通过为其设置字符串`:`来设置一样。

在Windows中,路径元素由`;`字符分隔,就像在大多数Windows路径列表中一样。 将上一段中的`:`改为`;`。

`JULIA_DEPOT_PATH'应该在Julia启动之前定义。 在启动中定义此变量为时已晚。启动期间的jl文件。 在这种情况下,您可以直接更改从环境变量填充的`DEPOT_PATH’数组。

"朱莉亚历史"

'REPL的绝对路径。find_hist_file`)'到REPL历史文件。 如果未设置’JUL 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`

预编译包时要使用的并行任务数。 请参阅说明https://pkgdocs.julialang.org/v1/api/#Pkg.precompile ['Pkg.预编译']。

'JULIA_PKG_DEVDIR`

使用的默认目录https://pkgdocs.julialang.org/v1/api/#Pkg.develop ['Pkg.开发']用于下载软件包。

'JULIA_PKG_IGNORE_HASHES`

如果该值设置为`1',则工件中的不正确哈希值将被忽略。 应谨慎使用此方法,因为它禁用下载验证,但允许您在不同类型的文件系统中移动文件时解决问题。 有关详细信息,请参阅关于页面https://github.com/JuliaLang/Pkg.jl/issues/2317 [Pkg问题。jl〇2317]。

兼容性:Julia1.6

它在Julia1.6及更高版本中得到支持。

`JULIA_PKG_OFFLINE'

如果该值设置为"true",则将启用脱机模式:请参阅说明https://pkgdocs.julialang.org/v1/api/#Pkg.offline ['Pkg.离线']。

兼容性:Julia1.5

Pkg离线模式需要Julia1.5或更高版本。

'JULIA_PKG_PRECOMPILE_AUTO`

如果该值设置为'0',则包操作执行的自动预编译将被禁用,这将更改清单。 请参阅说明https://pkgdocs.julialang.org/v1/api/#Pkg.precompile ['Pkg.预编译']。

`JULIA_PKG_SERVER'

指定使用的包注册表的URL。 默认情况下,`Pkg’使用'+https://pkg.julialang.org +'来提取Julia包。 此外,您可以禁用PkgServer协议并直接从其主机(GitHub,GitLab等)访问软件包。)通过设置`export JULIA_PKG_SERVER=""'。

`JULIA_PKG_SERVER_REGISTRY_PREFERENCE'

指定首选注册表类型。 目前,支持"保守"值(默认情况下),这意味着只有那些已由存储服务器处理的资源(因此有更高的机会从PkgServers访问)将被发布,而"急切"将发布其资源不一定由服务器处理的注册表。 储存设施。 不允许从任意服务器下载的限制性防火墙后面的用户不应使用"急切"类型。

兼容性:Julia1.7

这仅适用于Julia1.7及更高版本。

`JULIA_PKG_UNPACK_REGISTRY'

如果设置为"true",注册表将被解压缩,而不是保存为压缩的Tarball存档。

兼容性:Julia1.7

这仅适用于Julia1.7及更高版本。 在早期版本中,注册表始终解压缩。

'JULIA_PKG_USE_CLI_GIT`

如果设置为"true",使用git协议的Pkg操作将与外部可执行文件"git"一起工作,而不是与默认的libgit2库一起工作。

兼容性:Julia1.7

仅在Julia1.7及更高版本中支持使用’git’可执行文件。

'JULIA_PKGRESOLVE_ACCURACY`

分组比较器的精度。 这必须是一个正整数,默认情况下使用`1'。

'JULIA_PKG_PRESERVE_TIERED_INSTALLED`

将默认软件包安装策略更改为’Pkg。PRESERVE_TIERED_INSTALLED’以便包管理器尝试安装包版本,尽可能多地保存已安装包的版本。

兼容性:Julia1.9

这仅适用于Julia1.9及更高版本。

网络传输

'JULIA_NO_VERIFY_HOSTS`

'JULIA_SSL_NO_VERIFY_HOSTS`

'JULIA_SSH_NO_VERIFY_HOSTS`

'JULIA_ALWAYS_VERIFY_HOSTS`

指定应检查或不检查其id以确定特定传输级别的节点。 请参阅说明https://github.com/JuliaLang/NetworkOptions.jl#verify_host ['NetworcOptions.verify_host']。

'JULIA_SSL_CA_ROOTS_PATH`

指定包含证书颁发机构根的文件或目录。 请参阅说明https://github.com/JuliaLang/NetworkOptions.jl#ca_roots ['NetworcOptions.ca_roots']

link:@id External-applications[外部应用]。

'JULIA_SHELL`

Julia应该用来执行外部命令的shell的绝对路径(通过’Base.repl_cmd())。 默认情况下,使用环境变量'$SHELL,如果未指定`$SHELL’变量,则使用'/bin`sh'。

在Windows上,忽略此环境变量,直接执行外部命令。

'JULIA_EDITOR`

编辑器返回`InteractiveUtils。editor()`并且例如在方法中使用 'InteractiveUtils.编辑',指的是首选编辑器的命令,例如`vim'。

'JUL JULIA_EDITOR’优先于`VISUAL VISUAL`变量,后者又优先于’EDITOR EDITOR'。 如果没有设置这些环境变量,则编辑器在Windows和OS X上被视为"打开",如果存在则被视为"/etc/alternatives/editor",否则被视为"emacs"。

要在Windows中使用Visual Studio Code,请将变量`JUL JULIA_EDITOR`设置为’code。cmd'。

并行化

'JULIA_CPU_THREADS`

重新定义全局变量 '基地。系统。CPU_THREADS',可用逻辑CPU核数。

'JULIA_WORKER_TIMEOUT`

类型 'Float64',它为`Distributed’设置值。worker_timeout()(默认为'60.0)。 此函数设置工作流在终止前等待主进程建立连接的秒数。

'JULIA_NUM_THREADS`

一个无符号的64位整数('uint64_t'),指定Julia可用的最大线程数。 如果`JUL JULIA_NUM_THREADS’的值不是正数或未设置,或者如果使用系统调用无法确定CPU线程数,则线程数设置为'1'。

如果`JUL JULIA_NUM_THREADS’设置为’auto`,则线程数将设置为处理器线程数。

`JULIA_NUM_THREADS’应该在Julia启动之前定义。 在启动中定义此变量为时已晚。启动期间的jl文件。

兼容性:Julia1.5

在Julia1.5及更高版本中,也可以在启动时使用命令行参数`-t`(--threads)设置线程数。

兼容性:Julia1.7

要为`JUL JULIA_NUM_THREADS`变量设置`auto`值,需要Julia1.7或更高版本。

'JULIA_THREAD_SLEEP_THRESHOLD`

如果指定的字符串以大小写无关的子字符串'"infinite"'开头,则交替流永远不会进入睡眠模式。 否则’JUL JULIA_THREAD_SLEEP_THRESHOLD’被解释为无符号64位整数(`uint64_t'),并分配(以纳秒为单位)交替线程应该进入睡眠的时间量。

'JULIA_NUM_GC_THREADS`

设置垃圾回收期间使用的线程数。 如果未指定值,则设置工作线程数的一半。

兼容性:Julia1.10

环境变量是在版本1.10中添加的。

'JULIA_IMAGE_THREADS`

一个无符号的32位整数,指定在此Julia进程中编译映像时使用的流数。 对于一个小模块,这个变量的值可以忽略。 如果未指定值,则使用较小的值。 'JULIA_CPU_THREADS'或逻辑处理器内核数的一半的值。

`JULIA_IMAGE_TIMINGS'

一个布尔值,用于确定在图像编译期间是否会显示详细的时间信息。 默认值为0。

"朱莉亚-独白"

如果设置了"0"以外的值,则Julia的线程策略与专用计算机上的线程执行一致:主线程位于proc0子系统中,线程按相似性分组。 否则,Julia将线程策略的控制权转移到操作系统。

格式化REPL

确定如何在终端中格式化REPL输出的环境变量。 通常,应该设置这些变量的值https://en.wikipedia.org/wiki/ANSI_escape_code [ANSI转义序列]。 Julia提供了一个具有大部分相同功能的高级界面。 请参阅本章的部分 Julia REPL

'JULIA_ERROR_COLOR`

格式化’基地。error_color()'(默认:浅红色,`"\033[91m"')应用于终端中的错误。

'JULIA_WARN_COLOR`

格式化’基地。warn_color()'(默认:黄色,`"\033[93m"')应用于终端中的警告。

'JULIA_INFO_COLOR`

格式化’Base.info_color()(默认:,'"\033[36m"')应用于终端中的信息消息。

'JULIA_INPUT_COLOR`

格式化’基地。input_color()'(默认:正常状态,`"\033[0m"')应用于终端中的输入数据。

'JULIA_ANSWER_COLOR`

格式化’基地。answer_color()`(默认:正常状态,`"\033[0m"')应用于终端输出。

组装系统映像和包

'JULIA_CPU_TARGET`

修改目标计算机的体系结构以进行(预)编译 系统图像包装。 'JULIA_CPU_TARGET’仅影响输出到磁盘缓存的机器码映像的生成。 与`--cpu-target`或`-C`不同, 命令行参数,它不影响Julia会话内的JIT代码生成,其中机器代码仅存储在内存中。

可接受的值 'JULIA_CPU_TARGET'可以通过运行命令`julia-C help’来获得。

安装工程 'JULIA_CPU_TARGET'对于异构计算系统非常重要,它可能包含不同类型和具有不同特性的处理器。 这在高性能计算(HPC)集群中很常见,因为组件节点可能使用不同的处理器。

处理器的目标字符串是由';'分隔的字符串列表。 每行以处理器或体系结构的名称开头,后跟以`,`分隔的可选特征列表。 "通用"或空处理器名称表示目标ISA体系结构的基本所需功能集,该体系结构至少是编译C/C运行时所使用的体系结构。++. 每行都使用LLVM进行解释。

支持几个特殊选项。

  1. `clone_all'

    它用于强制克隆目标对象中的sysimg中的所有函数。 当使用否定形式(即`-clone_all')时,它禁用完全克隆,默认情况下对某些目标启用完全克隆。

  2. '基数([0-9]*)`

    设置基本目标对象的索引(基于0)。 基础目标对象是作为当前目标对象基础的目标对象,即未克隆的函数将使用基础目标对象中的版本。 此选项允许您强制基本目标对象的完整克隆(就好像为其指定了`clone_all`),如果它不是默认目标(0)。 索引只能小于当前索引。

  3. `opt_size'

    尺寸优化,对性能影响最小。 Clang/GCC`-Os'。

  4. `min_size'

    只优化大小。 叮当"-奥兹"。

调试和分析

`JULIA_DEBUG'

启用文件或模块的调试日志记录。 其他资料: '日志记录'

'JULIA_PROFILE_PEEK_HEAP_SNAPSHOT`

使用peek分析机制在运行时启用堆快照的收集。 请参阅部分 激活进行中

`JULIA_TIMING_SUBSYSTEMS'

允许您为特定Julia启动启用或禁用区域。 例如,当将变量值设置为'+GC,-INFERENCE`时,将启用`GC’区域,并禁用’INFERENCE’区域。 请参阅部分 区域的动态激活和停用

`JULIA_GC_ALLOC_POOL'

`JULIA_GC_ALLOC_OTHER'

`JULIA_GC_ALLOC_PRINT'

如果设置了这些环境变量,则它们接受不一定以字符开头的字符串。 ,然后是三个64位有符号整数('int64_t`)的冒号分隔列表的字符串插值。 这个整数的三倍是’a:b:c’是`a`,a+b,`a+2*b`的算术序列。.. 'c'。

  • 如果第`n次调用`jl_gc_pool_alloc()并且`n`属于由$J_GC_ALLOC_POOL’表示的算术序列,则强制进行垃圾回收。

  • 如果`maybe_collect()`在`第n次被调用并且`n`属于由`JUL JULIA_GC_ALLOC_OTHER’表示的算术序列,则垃圾收集被强制。

  • 如果对`第n次调用`jl_gc_collect()并且`n`属于由$J_GC_ALLOC_PRINT`表示的算术序列,则输出对`jl_gc_pool_alloc()`和`maybe_collect()'的调用次数的值。

如果环境变量的值以字符开头 垃圾回收事件之间的间隔是任意的。

这些环境变量仅在Julia代码已使用垃圾回收调试进行编译时才起作用(也就是说,如果`WITH_GC_DEBUG_ENV`在构建配置中具有值`1`)。

`JULIA_GC_NO_代际'

如果设置了"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分析创建并注册事件侦听器。

此环境变量仅在Julia代码已编译并支持使用以下任一项进行JIT分析时才起作用

*英特尔的https://software.intel.com/en-us/vtune [VTune Amplifier](`USE_INTEL_JITEVENTS`在构建配置中具有值`1'),或
*https://oprofile.sourceforge.io/news /[OProfile](`USE_OPROFILE_JITEVENTS`在构建配置中具有值`1')。
*https://perf.wiki.kernel.org [Perf](`USE_PERF_JITEVENTS`在构建配置中具有值`1')。 默认情况下启用此集成。

'ENABLE_GDBLISTENER`

如果设置了"0"以外的值,它将在发布版本中启用Julia代码的GDB注册。 在Julia调试版本中始终启用注册。 建议与`-g2’一起使用。

'JULIA_LLVM_ARGS`

传递到LLVM后端的参数。

'JULIA_FALLBACK_REPL`

它强制使用备份repl而不是REPL。jl.