环境变量
Julia可以使用许多环境变量进行配置,可以按照每个操作系统的常用方式进行设置,也可以在Julia中以可移植的方式进行设置。 例如,如果环境变量 'JULIA_EDITOR'您需要将值设置为’vim',您可以输入’ENV["JULIA_EDITOR"]="vim"`(例如,在REPL中)根据具体情况进行此更改,或者将其添加到用户的配置文件`~/中。朱莉娅/配置/启动。jl`在用户的主目录下实现永久的效果。 通过检查`ENV["JULIA_EDITOR"]`可以找到相同环境变量的当前值。
Julia中使用的环境变量通常以’JULIA’开头。 如果 'InteractiveUtils.versioninfo'使用关键字`verbose=true’调用,输出将包含所有适用于Julia的已定义环境变量,包括那些在其名称中包含`JULIA`的环境变量。
建议避免在运行时更改环境变量,例如在`~/内。朱莉娅/配置/启动。jl'。 一个原因是一些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’数组。 |
Pkg。jl
'JULIA_NUM_PRECOMPILE_TASKS`
预编译包时要使用的并行任务数。 请参阅说明https://pkgdocs.julialang.org/v1/api/#Pkg.precompile ['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及更高版本。 在早期版本中,注册表始终解压缩。 |
网络传输
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_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`( |
兼容性:Julia1.7
要为`JUL JULIA_NUM_THREADS`变量设置`auto`值,需要Julia1.7或更高版本。 |
'JULIA_THREAD_SLEEP_THRESHOLD`
如果指定的字符串以大小写无关的子字符串'"infinite"'开头,则交替流永远不会进入睡眠模式。 否则’JUL JULIA_THREAD_SLEEP_THRESHOLD’被解释为无符号64位整数(`uint64_t'),并分配(以纳秒为单位)交替线程应该进入睡眠的时间量。
'JULIA_IMAGE_THREADS`
一个无符号的32位整数,指定在此Julia进程中编译映像时使用的流数。 对于一个小模块,这个变量的值可以忽略。 如果未指定值,则使用较小的值。 'JULIA_CPU_THREADS'或逻辑处理器内核数的一半的值。
格式化REPL
确定如何在终端中格式化REPL输出的环境变量。 通常,应该设置这些变量的值https://en.wikipedia.org/wiki/ANSI_escape_code [ANSI转义序列]。 Julia提供了一个具有大部分相同功能的高级界面。 请参阅本章的部分 Julia REPL。
组装系统映像和包
'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进行解释。
支持几个特殊选项。
-
`clone_all'
它用于强制克隆目标对象中的sysimg中的所有函数。 当使用否定形式(即`-clone_all')时,它禁用完全克隆,默认情况下对某些目标启用完全克隆。
-
'基数([0-9]*)`
设置基本目标对象的索引(基于0)。 基础目标对象是作为当前目标对象基础的目标对象,即未克隆的函数将使用基础目标对象中的版本。 此选项允许您强制基本目标对象的完整克隆(就好像为其指定了`clone_all`),如果它不是默认目标(0)。 索引只能小于当前索引。
-
`opt_size'
尺寸优化,对性能影响最小。 Clang/GCC`-Os'。
-
`min_size'
只优化大小。 叮当"-奥兹"。
调试和分析
`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'。
-
如果第`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')。 默认情况下启用此集成。