我很高兴通过Conda安装使用miniconda来管理python环境。
安装后,我将独自留在base
环境中,并为新项目创建新环境。然后我根据需要conda env update
这些环境。但是,我不确定这是正确的方法。
在创建新环境之前,应该base
环境是conda env update
吗?
我认为这将使磁盘使用率降低,因为我可能不正确的理解是,如果软件包和依赖项完全匹配,那么在创建新环境时,Conda会将软件包链接到base
环境。 / p>
尽管...这没什么意义,因为它们很容易不同步。也许可以节省带宽,因为可以复制而不是下载匹配的软件包?
如果每个项目都有自己的环境,base
环境是否保持最新状态是否重要?
答案 0 :(得分:4)
Conda将所有程序包链接到pkgs
文件夹,该文件夹由所有环境共享,并且不以任何特殊方式与 base 关联。每当任何环境安装或升级软件包时,它们都会去那里,并且没有任何明显的努力从现有软件包中获取资源-如果依赖解决程序碰巧解析为缓存的软件包,它将使用它。当前,没有用于在整个环境中维持软件包同步的机制,因此必须设计一种工作流程来实现。
从理论上讲,可以使用Conda's env cloning来最大化软件包版本同步。为此,您可以从概念上将环境分为三类:
conda
,jupyter
,git
等。您可以根据需要自由更新新的命令行软件或需要conda update conda
。它应该与其他环境几乎没有重叠。py27-tmpl
,py36-tmpl
和py37-tmpl
。在这里,您将安装跨项目所需的最大软件包通用子集。模板环境的主要目的是制作一个... 这样的结构将最大限度地重用现有软件包版本。也可以使用package pinning来确保将来的依赖性解决方案不会从模板包升级。但是,这可能会限制为其他软件包安装某些最新版本。
不幸的是,您仍然会遇到与直觉相似的同步问题:虽然可以在创建新克隆之前更新这些模板env,但不会更新以前从它们衍生的克隆。但是对于项目环境,我认为最佳实践是一旦开始工作就不要对其进行操作。如果您关心空间,那么除了完成模块化项目,然后在使用后归档和删除项目环境外,别无选择。这样,偶尔会运行conda clean
。
答案 1 :(得分:0)
您可能应该使用
conda update conda
(来自您的默认环境)
每隔一段时间,以获取各种补丁程序和安全更新的最新信息。