I’m not sure if I understand the subtleties of your question, but what I do is every time I want to change the environment from within VScode, I go to preferences → Settings and change the Path. If you don’t need to do that too often, it’s fine.
Thanks @ptoche. To elaborate for other people, I went to Settings > Extensions > Julia > Environment Path, and clicked “Workspace” in the red box in the attached screenshot.
Then I clicked “Edit in settings.json”, and changed
{
"julia.environmentPath": ""
}
to
{
"julia.environmentPath": "<MY HOME DIRECTORY>/.julia/environments/v1.8"
}
This makes VScode REPL to start in the home environment.
2 Likes
I have the following ~/.julia/config/startup.jl
in place, which also works when using the command line interface (CLI) or Jupyter Notebooks:
println("Executing user-specific startup file (", @__FILE__, ")...")
try
using Revise
println("Revise started")
catch e
@warn "Error initializing Revise" exception=(e, catch_backtrace())
end
using Pkg
if isfile(joinpath(pwd(), "Project.toml")) && isfile(joinpath(pwd(), "Manifest.toml"))
Pkg.activate(pwd())
else
Pkg.activate("$(ENV["HOME"])/.julia/environments/v$(VERSION.major).$(VERSION.minor)")
end
println(" → Overrides the environment set by the VS Code Julia extension!")
My current startup files for Julia 1.9; which work identically both in Terminal and with VS Code.
Cross reference: Starting REPL (v1.9) within a project does not recognise packages installed at system level · Issue #3304 · julia-vscode/julia-vscode · GitHub
$JULIA_PATH/etc/julia/startup.jl
# This file contains site-specific commands to be executed on Julia startup;
# Users may store their own personal commands in `~/.julia/config/startup.jl`.
println("Executing site-specific startup file (", @__FILE__, ")...")
push!(LOAD_PATH, joinpath("$(ENV["JULIA_PATH"])", "local", "share", "julia",
"environments", "v$(VERSION.major).$(VERSION.minor)"))
using Pkg
$HOME/.julia/config/startup.jl
println("Executing user-specific startup file (", @__FILE__, ")...")
# https://github.com/julia-vscode/julia-vscode/issues/3304
project = (Base.JLOptions().project != C_NULL ?
unsafe_string(Base.JLOptions().project) :
get(ENV, "JULIA_PROJECT", nothing))
if !isnothing(project)
Pkg.activate(; io=devnull)
end
try
using Revise
println("Revise started")
catch e
@warn "Error initializing Revise" exception=(e, catch_backtrace())
end
if !isnothing(project) &&
# https://github.com/julia-vscode/julia-vscode/issues/3304
!startswith(Base.load_path_expand(Base.LOAD_PATH[end]), project)
if startswith(project, "@")
if startswith(project, "@.")
if isnothing(Base.current_project())
Pkg.activate(joinpath("$(ENV["HOME"])", ".julia",
"environments", "v$(VERSION.major).$(VERSION.minor)"))
else
Pkg.activate(Base.current_project(); io=devnull)
end
else
Pkg.activate(Base.load_path_expand(project); io=devnull)
end
else
Pkg.activate(abspath(expanduser(project)); io=devnull)
end
else
if isfile(joinpath(pwd(), "Project.toml")) &&
isfile(joinpath(pwd(), "Manifest.toml"))
Pkg.activate(pwd())
else
Pkg.activate(joinpath("$(ENV["HOME"])", ".julia", "environments",
"v$(VERSION.major).$(VERSION.minor)"))
end
end
JULIA_PATH=/usr/local/julia