只是想知道更新 Anaconda 和 Conda 安装和虚拟环境的正确方法是什么。这是我一步一步的困惑:
conda update anaconda
,它会更新/降级很多软件包。conda update conda
,它再次更新/降级了一些包。conda update --update-all
它开始降级/升级不同的包。最后,为了确保一切都更新了,我又跑了conda update anaconda
一次。我期待着像Everything's up to date这样的消息,但令我惊讶的是,它再次显示了大量需要再次更新/降级的软件包列表?
我在这里做错了什么?在我看来,我好像在用这些命令绕圈子。有什么帮助吗?
mer*_*erv 19
您本身并没有做错任何事情,但是在同一个环境中运行conda update anaconda
并conda update --all
紧随其后并没有多大意义-它们代表两种完全不同的配置。
Anaconda 是一个 Python 发行版,将大量软件包捆绑在一起。据推测,一堆测试用于验证所有包版本和构建是否相互兼容。因为这需要时间,所以 Anaconda 团队anaconda
每隔几个月左右才会发布新的发行版(即新版本)。如果您想要一组经过互操作性测试的稳定软件包,请执行conda update anaconda
.
在 Anaconda 发布之间,许多软件包的新版本仍会在 Anaconda 频道上发布,如果您运行,conda update --all
您将不可避免地领先于anaconda
捆绑包中指定的版本。如果您想要最新的单个包版本,并且不介意使用未经过全面集成测试的包构建,则运行conda update --all
.
可能值得注意的是,优先访问最新版本软件包的人通常似乎更喜欢Conda Forge,因为它往往有更频繁的软件包发布。但是,在我看来,如果您无论如何都要将大多数软件包切换到 Conda Forge,那么安装 Anaconda 几乎没有意义。相反,只需安装Miniconda并在开始时仅从 Conda Forge 安装您想要的内容。
就我个人而言,conda update
一旦我强化了项目的要求,我就很少在 env 上运行。每次更新 env 时,都有可能破坏已经编写的代码。相反,Conda 可以很容易地创建新的 env,如果它们与其他 env 有很多重叠,那么由于通过 hardlinking 在 envs 之间共享包,这些 envs 可能会很轻。
上述所有内容的一个例外是conda
包,它是您用来管理包和环境的基础架构。那,应该像任何其他包管理器一样更新(例如, apip
或 a homebrew
)。
exa*_*xan 14
在Anaconda 的这篇有用帖子中找到了答案
下面是一个经常被问到的问题,我决定发布一个解释 Anaconda 保持最新状态的各种方式的答案会有所帮助。这个问题最初是在 StackOverflow 上提出的。
我的电脑上安装了 Anaconda,我想更新它。在 Navigator 中,我可以看到有几个单独的包可以更新,还有一个 anaconda 包,有时有版本号,有时说自定义。我该如何进行?
95% 的人真正想要的是什么在大多数情况下,当您说要更新 Anaconda 时,您想要做的是执行以下命令:
conda update --all
Run Code Online (Sandbox Code Playgroud)
这会将当前环境中的所有包更新到最新版本 - 小字是它可能会使用某些包的旧版本以满足依赖性约束(通常这不是必需的,并且当需要时包计划求解器将尽最大努力将影响降至最低)。
这需要从命令行执行,最好的方法是从 Anaconda Navigator,然后是“环境”选项卡,然后单击根环境旁边的三角形,选择“打开终端”:
此操作只会更新一个选定的环境(在本例中为根环境)。如果您有其他要更新的环境,可以重复上述过程,但首先单击环境。当它被选中时,右侧会出现一个三角形标记(见上图,步骤 3)。或者,您可以从命令行提供环境名称 (-n envname) 或路径 (-p /path/to/env)。例如,要从上面的屏幕截图更新您的 dspyr 环境:
conda update -n dspyr --all
Run Code Online (Sandbox Code Playgroud)
如果您只对更新单个软件包感兴趣,那么只需单击导航器中的蓝色箭头或蓝色版本号,例如上面屏幕截图中的 astroid 或 astropy,这将标记这些软件包以进行升级。完成后,您需要单击“应用”按钮:
或者从命令行:
conda update astroid astropy
Run Code Online (Sandbox Code Playgroud)
如果您不关心软件包版本,而只想要“标准 Anaconda 发行版中所有软件包的最新集合,只要它们可以协同工作”,那么您应该看看这个要点。
在大多数情况下,更新包列表中的 Anaconda 包会产生令人惊讶的结果——您实际上可能会降级许多包(实际上,如果它指示版本为自定义,则很有可能)。上面的要点提供了详细信息。
您的根环境可能不是尝试和管理一组精确的软件包的好地方——它将是一个动态的工作空间,安装了新的软件包并随机更新了软件包。如果您需要一组确切的包,请创建一个 conda 环境来保存它们。由于 conda 包缓存和使用文件链接的方式,这样做通常很快并且消耗很少的额外磁盘空间。例如:
conda create -n myspecialenv -c bioconda -c conda-forge python=3.5 pandas beautifulsoup seaborn nltk
Run Code Online (Sandbox Code Playgroud)
conda 文档有更多详细信息和示例。
这些都不会帮助更新通过 pip 从 PyPI 安装的包,或使用 python setup.py install 安装的任何包。conda list 会给你一些关于你在环境中拥有的基于 pip 的 Python 包的提示,但它不会做任何特殊的事情来更新它们。
这几乎是完全相同的故事,除了如果它是由其他人安装的(例如,安装到 /opt/anaconda/latest),您可能无法更新根环境。如果您无法更新您正在使用的环境,您应该能够克隆然后更新:
conda create -n myenv --clone root
conda update -n myenv --all
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29134 次 |
最近记录: |