家庭项目和
--project
这个
——项目
标志定义“家庭项目”或“家庭环境”。环境由
Project.toml
/
Manifest.toml
并定义哪些包可用于
using
/
import
.
你可以设定
——项目
(i)目录(有或没有
项目文件
)(ii)通往
项目文件
或(iii)
@.
. (i)和(i i)都是不言而喻的——茱莉亚会考虑将位于路径上的项目作为家庭项目。现在(iii),如果你设置
--project=@.
茱莉亚会找一个
现有的
项目文件
归档并将其用作主项目。请考虑以下示例:
~$ tree .
.
âââ A
âââ Project.toml
1 directory, 1 file
哪里
A
是一个空目录。我们可以尝试(i)和(i i)轻松:
# existing file
[~]$ julia --project=Project.toml -E 'Base.active_project()'
"~/Project.toml"
# existing directory
[~]$ julia --project=A -E 'Base.active_project()'
"~/A/Project.toml"
# non-existing directory
[~]$ julia --project=B -E 'Base.active_project()'
"~/B/Project.toml"
# non-existing file
[~]$ julia --project=B/Project.toml -E 'Base.active_project()'
"~/B/Project.toml"
请注意,在上面最后三个示例中,
项目文件
文件
不存在
,但如果需要,它将被创建(例如在使用时
Pkg
操作包)。
现在,把它与
@
,它将查找
现有的
项目文件:
# from our root directory
[~]$ julia --project=@. -E 'Base.active_project()'
"~/Project.toml"
# from inside the A directory
[~/A]$ julia --project=@. -E 'Base.active_project()'
"~/Project.toml"
在这两种情况下我们都发现了相同的
项目文件
文件。与
@
选项Julia首先在当前目录中查找
项目文件
文件,如果找不到,则向上一级转到父文件夹并查找该文件夹,依此类推。这就是第二个例子中发生的事情;Julia没有发现
项目.toml
文件在空
一
目录,因此我们移到父目录,并找到
项目文件
我们在那儿。
是的,我们可以为这个选择其他的代币,但不能
.
因为这已经有了意义;它是指向当前目录的路径,是与一起使用的完全有效的路径
——项目
.
负载路径和
"@"
加载包
Example
我们用
例子
在其
[deps]
部分;主项目还需要显示在julias加载路径中(
Base.load_path()
)默认情况下,加载路径从
["@", "@v#.#", "@stdlib"]
哪里
"@v#.#"
扩展到
~/.julia/environments/v#.#
具有
#
替换为Julias主版本号和次版本号,以及
"@stdlib"
使用julias标准库扩展到目录。
“@”
扩展到1。活动项目(用激活
Pkg.activate
/
pkg> activate
或2。家庭项目。我们可以用
base.load_路径())
以下内容:
# without home project; @ expands to nothing
[~]$ julia -E 'Base.load_path()'
["~/.julia/environments/v1.0/Project.toml", "~/julia10/usr/share/julia/stdlib/v1.0"]
# with home project; @ expands to our specified home project
[~]$ julia --project=@. -E 'Base.load_path()'
["~/Project.toml", "~/.julia/environments/v1.0/Project.toml", "~/julia10/usr/share/julia/stdlib/v1.0"]
最后,如果我们移除
“@”
从加载路径来看,我们定义了一个主项目并不重要:
[~]$ export JULIA_LOAD_PATH="" && julia --project=@. -E 'Base.load_path()'
String[]