Je veux changer le répertoire des packages dans Julia. La valeur par défaut est
"~/.Julia/v0.4"
Je veux déplacer vers /opt/Julia/v0.4/
. Idéalement, je souhaite déplacer les packages déjà installés dans ~/.Julia/v0.4
au nouvel emplacement. Mais si ce n'est pas possible, je peux les réinstaller.
Que dois-je faire?
on peut changer le répertoire des packages de Julia en suivant ces étapes:
export Julia_PKGDIR=/your/directory
dans Shell (ou ajoutez manuellement une nouvelle variable d'environnement Julia_PKGDIR
sur Windows)Pkg.init()
dans Julia pour initialiser un nouveau système de packageREQUIRE
de l'ancien répertoire vers le nouveauPkg.resolve()
dans JuliaLe "répertoire de packages" dans le nouveau gestionnaire de packages est appelé DEPOT_PATH
, il peut être modifié en ajoutant une variable d'environnement Julia_DEPOT_PATH
:
Julia_DEPOT_PATH=./test Julia
Julia> DEPOT_PATH
1-element Array{String,1}:
"./test"
(v0.7) pkg> add JSON2
Cloning default registries into /Users/gnimuc/test/registries
Avec le nouveau gestionnaire de packages, nous sommes en mesure de créer des projets isolés dans n'importe quel répertoire que nous voulons au lieu d'avoir un seul répertoire de packages géant. Chaque projet contient un Project.toml
Et un Manifest.toml
S'il a des dépendances. Ces deux fichiers enregistrent et assurent le suivi de l'environnement du projet.
Les informations suivantes peuvent être obsolètes. Je recommande fortement d'utiliser PkgTemplates.jl pour générer des projets dans Julia-v1.0 +.
Nous pouvons générer un nouveau projet dans n'importe quel dossier, mais nous devons cd
dans le dossier du projet pour using
le projet. Le (v0.7)
Ci-dessous montre que nous sommes toujours dans l'environnement par défaut, nous ne pouvons donc pas utiliser le projet nouvellement généré:
(v0.7) pkg> generate ./MyNewProject
Generating project MyNewProject:
./MyNewProject/Project.toml
./MyNewProject/src/MyNewProject.jl
Julia> using MyNewProject
ERROR: ArgumentError: Module MyNewProject not found in current path.
Run `Pkg.add("MyNewProject")` to install the MyNewProject package.
Stacktrace:
[1] require(::Module, ::Symbol) at ./loading.jl:868
Si nous cd
dans le dossier du projet et activate
l'environnement, nous pouvons using
notre nouveau projet sans aucun problème:
Shell> cd MyNewProject/
/Users/gnimuc/MyNewProject
(v0.7) pkg> activate .
(MyNewProject) pkg>
Julia> using MyNewProject
Je pense que c'est la grande différence entre le nouveau gestionnaire de paquets et l'ancien. En bref, nous devons explicitement activate
notre projet/package non enregistré.
Selon le document, nous pouvons ajouter un package/projet non enregistré via la commande add
:
(HelloWorld) pkg> add https://github.com/fredrikekre/ImportMacros.jl
Cette commande ajoute le package cible en tant que dépendance de notre projet actuel. Dans cet exemple, nous avons ajouté ImportMacros
dans le Manifest.toml
De HelloWorld
. Et si nous l'utilisions simplement comme un projet de haut niveau? Pour l'ajouter à l'environnement par défaut (v0.7)
? non, nous n'en avons pas besoin. La réponse est que nous pouvons télécharger directement le code, cd
dans le dossier et exécuter instantiate
en mode pkg:
Shell> git clone https://github.com/Gnimuc/GLTF.jl GLTF
Cloning into 'GLTF'...
remote: Counting objects: 286, done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 286 (delta 73), reused 103 (delta 59), pack-reused 167
Receiving objects: 100% (286/286), 62.16 KiB | 46.00 KiB/s, done.
Resolving deltas: 100% (135/135), done.
Shell> cd GLTF
pkg> activate .
(GLTF) pkg> instantiate
Updating registry at `~/.Julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Le nouveau gestionnaire de paquets est génial! Nous n'avons pas besoin de "include
avant using
" ni de tout faire comme un paquet juste pour using
. Nous avons maintenant un "projet" complet!
Julia seule façon:
Julia> ENV["Julia_PKGDIR"] = "E:\\Julia-0.6.0\\portable"
"E:\\Julia-0.6.0\\portable"
Julia> ENV["Julia_PKGDIR"]
"E:\\Julia-0.6.0\\portable"
Julia> Pkg.init()
INFO: Initializing package repository E:\Julia-0.6.0\portable\v0.6
INFO: Cloning METADATA from https://github.com/JuliaLang/METADATA.jl
Cependant, le répertoire cache pointe toujours vers l'ancien dossier, j'ai donc vérifié pourquoi et je l'ai compris:
Julia> Base.LOAD_CACHE_PATH
1-element Array{String,1}:
"C:\\Users\\kung\\.Julia\\lib\\v0.6"
Julia> Pkg.__init__()
2-element Array{String,1}:
"E:\\Julia-0.6.0\\portable\\lib\\v0.6"
"C:\\Users\\kung\\.Julia\\lib\\v0.6"
Julia> pop!(Base.LOAD_CACHE_PATH)
"C:\\Users\\kung\\.Julia\\lib\\v0.6"
Julia> Base.LOAD_CACHE_PATH
1-element Array{String,1}:
"E:\\Julia-0.6.0\\portable\\lib\\v0.6"
En tant que fonction simple:
function set_Julia_dir(dir::String)
ENV["Julia_PKGDIR"] = dir
Pkg.init()
Pkg.__init__()
pop!(Base.LOAD_CACHE_PATH)
end
set_Julia_dir("E:\\Julia-0.6.0\\portable")