Gol*_*Jer 3 python package-management anaconda conda
我很高兴通过miniconda安装使用Conda来管理python环境。
安装后,我不理会base环境,而是为新项目创建新环境。然后我conda env update根据需要在这些环境中使用。但是,我不确定这是正确的方法。
如果该base环境中conda env update创建新环境前编?
我认为这会使磁盘使用率降低,因为我可能不正确的理解是,base如果包和依赖项完全匹配,那么Conda 在创建新环境时会将包链接到环境。
尽管...没有太大意义,因为它们很容易不同步。也许它可以节省带宽,因为可以复制而不是下载匹配的软件包?
如果每个项目都有自己的环境,那么base环境是否保持最新状态是否重要?
Conda将所有软件包链接到该pkgs文件夹,该文件夹由所有环境共享,并且不以任何特殊方式与base关联。每当任何环境安装或升级软件包时,它们都会去那里,并且没有任何明显的努力来从现有软件包中获取资源-如果依赖解决程序碰巧解析为缓存的软件包,它将使用它。当前,没有维护跨env的包同步的机制,因此必须设计一种工作流来实现它。
从理论上讲,可以使用Conda的env克隆来最大化程序包版本同步。为此,您可以从概念上将环境分为三类:
conda,jupyter,git等。这时候你需要新的命令行的软件或需要你自由地更新conda update conda。它应该与其他环境几乎没有重叠。py27-tmpl,py36-tmpl以及py37-tmpl针对不同版本的Python,你可能需要为不同的项目。在这里,您将安装跨项目所需的最大软件包通用子集。模板环境的主要目的是使...这样的结构将最大化现有软件包版本的重用。从Conda v4.7开始,依赖关系求解器默认为带有隐式--freeze-installed|--no-update-deps标志的第一阶段求解,该标志会尝试安装请求的程序包而不必更改现有程序包。如果与模板环境保持同步是您的目标,那么--freeze-installed在安装时可能要始终使用。也可以使用包固定,这明确阻止指定的包从模板升级。但是,这可能会限制为其他软件包安装某些最新版本。
不幸的是,您仍然会遇到与直觉相似的同步问题:虽然可以在创建新克隆之前更新这些模板环境,但不会更新先前从它们衍生的克隆。但是对于项目环境,我认为最佳实践是一旦开始工作就不要对其进行操作。如果您关心空间,那么除了完成模块化项目,然后在使用后归档和删除项目环境外,别无选择。那个,偶尔跑conda clean。
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |