注意:这个问题是指 Julia v1.5。当然,理想情况下,任何时候答案都应该同时回答最新版本的问题。
Julia 安装提供了默认环境(例如,@v1.5
)。在某个工作目录中运行 Julia 时,可以使用 julia>] activate .
来创建新环境或激活当前环境(以防当前文件夹包含诸如 Project.toml
之类的文件)。
当 Julia 代码在特定环境中运行时,环境定义了可以通过 using
或 import
导入哪些包(或模块)。但是,安装在默认环境中的软件包总是可以使用。我还没有看到文档中提到的这个事实(尽管它很可能被提到)并且在花了一些时间追踪丢失的导入后学到了这个“艰难的方式”。
这有好处也有坏处:有时人们觉得需要使用不属于项目的包,例如,用于分析或调试。如果这些安装在默认环境中,则可以在不污染项目依赖项的情况下使用它们。另一方面,尽管项目使用了某个包,但可能会发生忘记将某个包add
加入项目环境的情况。在这种情况下,其他用户无法仅从 Project.toml
和 Manifest.toml
重现必要的环境。 (将非平凡代码添加到在 Julia 启动时运行的 Julia 脚本中也会有这个缺点。
在我看来,有几种方法可以解决这个问题:
我的问题:是否有更多(更好?)方法来处理这个问题?哪个选择对 Julia 来说是惯用的?
答案 0 :(得分:3)
LOAD_PATH
负责确定哪些环境组成以形成有效环境。默认情况下,它包括活动环境、默认环境和标准库。
测试,当由 const resizeObserver = React.useRef<ResizeObserver>(new ResizeObserver((entries:ResizeObserverEntry[]) => {
// your code to handle the size change
}));
const resizedContainerRef = React.useCallback((container: HTMLDivElement) => {
if (container !== null) {
resizeObserver.current.observe(container);
}
// When element is unmounted, ref callback is called with a null argument
// => best time to cleanup the observer
else {
if (resizeObserver.current)
resizeObserver.current.disconnect();
}
}, [resizeObserver.current]);
return <div ref={resizedContainerRef}>
// Your component content here
</div>;
(或等效的 Pkg.test
)激活时,将使用仅由被测试项目组成的无菌加载路径运行。因此,测试只能访问由各自的 pkg> test
和 Project.toml
文件定义的依赖关系图。
在默认环境中包含实用程序(例如分析工具)似乎是标准做法。
如果您不喜欢这种行为,您可以修改启动文件中的 Manifest.toml
以仅包含活动项目。