JuliaPy / JuliaPy/pyjulia

How to use separate cache in Julia 0.7?

Open
#173 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
893
Forks
101
PR merge metrics
No merged PRs in 30d

Description

While writing #172, I realized that it won't work in Julia 0.7 since the cache directory structure is completely different. In Julia 0.7 it's `~/.julia/compiled/v0.7/{package name}/{slug}.ji` and this is the code that locates the path:

```julia
cache_file_entry(pkg::PkgId) = joinpath(
"compiled",
"v$(VERSION.major).$(VERSION.minor)",
pkg.uuid === nothing ? "$(pkg.name).ji" : joinpath(pkg.name, "$(package_slug(pkg.uuid)).ji")
)

function find_all_in_cache_path(pkg::PkgId)
paths = String[]
entry = cache_file_entry(pkg)
for depot in DEPOT_PATH
path = joinpath(depot, entry)
isfile_casesensitive(path) && push!(paths, path)
end
return paths
end
```

--- https://github.com/JuliaLang/julia/blob/7a8459972e28fa1adf01a9c6d8d1227ec05a09d8/base/loading.jl#L594-L608

In principle, I guess we can do a similar trick we do with `Base.LOAD_CACHE_PATH` in 0.6 with `Base.DEPOT_PATH` in 0.7. But creating a depot for each Python version sounds like a overkill since it has more than a cache directory. Here is how they describe `Base.DEPOT_PATH`:

> The first entry is the “user depot” and should be writable by and owned by the current user. The user depot is where: registries are cloned, new package versions are installed, named environments are created and updated, package repos are cloned, newly compiled package image files are saved, log files are written, development packages are checked out by default, and global configuration data is saved. Later entries in the depot path are treated as read-only and are appropriate for registries, packages, etc. installed and managed by system administrators.
>
> --- https://docs.julialang.org/en/latest/stdlib/Pkg/

So, what is the best way to support multiple Python interpreters in Julia 0.7?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.