跳到主要内容

2023 年 9 月发布

·6 分钟阅读
Ken Odegard
Conda 维护者

2023 年 9 月的发布包括对五个 conda 社区项目的更新:conda、conda-build、conda-libmamba-solver、conda-index 和 pycosat!🎉 这些都已发布到 mainconda-forge

Conda 23.9.0 中的更改

要更新 conda,请运行

conda install -n base conda=23.9.0

📢 特别公告 📢

信息

Conda 的默认求解器将在不久的将来在 特殊的 23.10.0 版本中更改为 conda-libmamba-solver

您现在就可以通过配置您的 conda 安装以使用它(例如,运行 conda config --set solver libmamba)来受益于 conda-libmamba-solver

当前的“经典”求解器基于 pycosat/Picosat,并且在可预见的未来仍将是 conda 的一部分。可以并且可以使用回退方案。

有关此更改以及完整公告的更多详细信息,请参阅 conda 23.9.0 变更日志

✨ 新增功能? ✨

  • 为 conda 添加了新的“auth handler”插件钩子。有关示例,请参阅新的 conda-auth 插件。
  • 索引缓存元数据默认锁定;现在还提供 --no-lock 选项。
  • 新的 context.register_envs 选项可以控制在创建环境时是否在 ~/.conda/environments.txt 中注册环境。默认为 true。
  • 新的详细输出详细程度级别(即,旧的调试级别 -vv 现在是 -vvv)。
  • 添加了对 truststoressl_verify 配置选项的支持,使 conda 能够使用操作系统证书存储(需要 Python 3.10 或更高版本)。
  • 现在支持 emscripten-wasm32wasi-wasm32 平台。

🔧 修复了什么? 🔧

  • conda env create 在使用 pip 依赖项写入磁盘之前检查目录权限。
  • CONDA_SSL_VERIFY=false 时,隐藏 JLAP 的 InsecureRequestWarning,与非 JLAP 行为匹配。
  • 不再允许使用前缀中带有冒号来创建 conda 环境。
  • 当将 JLAP 与 file:/// URI 一起使用时,已修复使用不存在的请求记录响应的 AttributeError
  • 为了获得更清晰的日志,进度条不再显示在非交互式运行中。
  • --json--debug 默认为 NULL,以便不覆盖 CONDA_JSONCONDA_DEBUG 环境变量。
  • 修复了 conda remove --all --json 输出。
  • 已更新测试数据,以停止触发安全扫描器的误报。
  • 在 WSL 上,基本命令(例如,conda info)不再出现性能下降。
  • Conda 现在配置为忽略“Retry-After”标头,以避免此值非常大并导致 conda 无限期挂起的情况。
  • repodata.info.json 上的 JSONDecodeError 被视为警告,等同于缺少 repodata.info.json
  • 修复了 conda config --show-sources --json 的排序错误。
  • 现在检测到 find_commands 中的 OSError,以解决 Windows 上不正确的 PATH 条目。
  • conda env update --prune 仅使用来自 environment.yml 文件的规范,并忽略历史规范。

🌅 标记为弃用的内容? 🌅

这是 conda 的第一个版本,根据弃用时间表删除了先前标记为已弃用的代码。以下是已删除内容的列表

  • conda.another_unicode()
  • conda._vendor.toolz
  • conda._vendor.tqdm
  • conda.auxlib.decorators.memoized
  • conda.base.context.Context.experimental_solver
  • conda.base.context.Context.conda_private
  • conda.base.context.Context.cuda_version
  • conda.base.context.get_prefix()
  • conda.cli.common.ensure_name_or_prefix()
  • --experimental-solver
  • conda.common.cuda
  • conda.common.path.explode_directories(already_split)
  • conda.common.url.escape_channel_url()
  • conda.core.index.check_whitelist()
  • conda.core.solve._get_solver_class()
  • conda.core.subdir_data.read_mod_and_etag()
  • conda.gateways.repodata.RepodataState.load()
  • conda.gateways.repodata.RepodataState.save()
  • conda.lock
  • conda_env.cli.common.stdout_json()
  • conda_env.cli.common.get_prefix()
  • conda_env.cli.common.find_prefix_name()

Conda-Build 3.27.0 中的更改

要更新 conda-build,请运行

conda install -n base conda-build=3.27.0

✨ 新增功能? ✨

  • 删除了 glob2 依赖项。
  • 现在支持 emscripten-wasm32wasi-wasm32 平台。

🔧 修复了什么? 🔧

  • conda 命令插件中的导入被延迟到使用该命令时,从而避免了导入时的副作用。

📄 文档中的新增功能? 📄

  • 改进了 ~=(兼容性发布)匹配规范的格式。
  • 文档现在阐明了 build 前缀在 host 前缀之后激活。
  • 添加了解释,说明应从基本环境运行 conda-build。

Conda-Libmamba-Solver 23.9.0/23.9.1 中的更改

要更新 conda-libmamba-solver,请运行

conda install -n base conda-libmamba-solver=23.9.1

✨ 新增功能? ✨

  • 提高了 notify_conda_outdated 逻辑的性能。
  • Libmamba 的 repoquery 搜索功能现在作为 conda 子命令插件公开。
  • 重写了如何创建 libsolv 的任务,利用了 libmambaadd_pin 功能(需要 libmambapy >=1.5.1)。
  • 仅名称的 pin 现在锁定相应的已安装软件包。
  • 如果可用且最近,则使用 repodata 的 .solv 缓存。

🔧 修复了什么? 🔧

  • 当连续两次运行相同的命令时,求解器不再在两个兼容的解决方案之间跳动。
  • 优雅地处理了未传递通道的命令。
  • 为返回的 PackageRecord 有效负载中缺少的 noarch 字段添加了解决方法。
  • 修复了 --prune 标志在 conda env update 命令中无法正常工作的错误。
  • 在某些条件下,环境不再被强制更新到更高优先级的通道。
  • 不再注入来自不存在或不可用的已安装软件包的通道。
  • PackagesNotFoundError 异常中的所有已配置通道都正确打印。
  • 修复了在 CLI 中指定带有构建字符串的 MatchSpec 并且存在同一软件包名称的 pinned spec 时崩溃的问题。
  • defaults::pkg 解决方法仅适用于默认值 default_channels
  • 用户将无法再使用不兼容的 CLI 规范覆盖 pinned spec。相反,他们必须显式修改其 pinned spec。

📄 文档中的新增功能? 📄

  • 现在记录了与 conda 的 classic 求解器行为的有意偏差。

Conda-Index 0.3.0 中的更改

要更新 conda-index,请运行

conda install -n base conda-index=0.3.0

✨ 新增功能? ✨

  • 添加了 --run-exports 以生成符合 CEP-12 标准的每个 subdirrun_exports.json 文档。
  • 漂亮打印 repodata.json 不再是默认设置,从而节省了时间和空间。
  • 版本要求:conda >= 4.14

Pycosat 0.6.5/0.6.6 中的更改

要更新 conda-index,请运行

conda install -n base pycosat=0.6.6

✨ 新增功能? ✨

  • Pycosat 0.6.4 意外地未包含计划发布的更改。Pycosat 0.6.5 包含这些更改。
  • PyMem_Calloc() 用于将内存初始化为 0

我们 ❤️ 我们的社区

总共,我们在本次发布周期中有 11 位 (!) 新贡献者;感谢我们所有的开源社区成员,感谢他们帮助使这些改进成为可能。

如果您有任何想法或想帮助改进任何 conda 社区项目,我们非常欢迎新的(和回访的)贡献者! 😄