package - Julia - 如果我激活一个新环境,为什么我仍然可以从我的一般环境中加载模块?

标签 package julia environment

我想知道 Julia 中的环境是如何工作的。我认为通过创建一个新环境,您应该只能看到该环境中的包,但似乎并非如此。为什么呢?
IE。如果我创建一个临时目录并使用该目录作为环境启动 Julia,我仍然可以加载在我的一般环境中但不在标准库中的模块。

$ mkdir /tmp/jl_temp
$ julia --project=/tmp/jl_temp 
(jl_temp) pkg> st
Status `/tmp/jl_temp/Project.toml` (empty project)

julia> using Plots

julia> plot()
这可以在没有给我任何未安装软件包的错误的情况下工作。有人可以解释一下这种行为的原因吗?对我来说,除了标准库和 Project.toml 中的包之外,它应该无法加载任何包。环境文件。我在 Documentation of Pkg.jl 中找不到任何答案.

最佳答案

这由您设置 LOAD_PATH 的方式管理。多变的。见 here .
默认 LOAD_PATH设定为:

julia> LOAD_PATH
3-element Array{String,1}:
 "@"
 "@v#.#"
 "@stdlib"
通过以下方式检查完整的搜索路径:
(@v1.5) pkg> activate .
 Activating new environment at `~/Project.toml`

julia> Base.load_path()
3-element Array{String,1}:
 "/home/bkamins/Project.toml"
 "/home/bkamins/.julia/environments/v1.5/Project.toml"
 "/home/bkamins/julia/share/julia/stdlib/v1.5"
(我已在当前​​工作目录中激活项目)
所以你可以看到,如果在你的项目中没有找到某个包,Julia 会退回到 LOAD_PATH 的下一个条目。 .如果你想避免它然后修改LOAD_PATH如所须。

关于package - Julia - 如果我激活一个新环境,为什么我仍然可以从我的一般环境中加载模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65858895/

相关文章:

deployment - Debian 软件包与 Fabric 部署

julia - Julia 不支持抽象多重继承有什么根本原因吗?

服务器上的 python conda 部署

mysql - rake 数据库 :migrate runs in development AWS Beanstalk

swift - 如何使用 swiftc 创建可导入的 Swift 库

java - 如何获取.class文件的包名?

python - 创建debian包,将python脚本安装到Ubuntu的/usr/local/bin下

julia - Julia 情节中的注释

json - Julia 中的 API POST 请求

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?