2023 年 9 月发布
·6 分钟阅读
2023 年 9 月的发布包括对五个 conda 社区项目的更新:conda、conda-build、conda-libmamba-solver、conda-index 和 pycosat!🎉 这些都已发布到 main
和 conda-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
)。 - 添加了对
truststore
到ssl_verify
配置选项的支持,使 conda 能够使用操作系统证书存储(需要 Python 3.10 或更高版本)。 - 现在支持
emscripten-wasm32
和wasi-wasm32
平台。
🔧 修复了什么? 🔧
conda env create
在使用 pip 依赖项写入磁盘之前检查目录权限。- 当
CONDA_SSL_VERIFY=false
时,隐藏 JLAP 的InsecureRequestWarning
,与非 JLAP 行为匹配。 - 不再允许使用前缀中带有冒号来创建 conda 环境。
- 当将 JLAP 与
file:///
URI 一起使用时,已修复使用不存在的请求记录响应的AttributeError
。 - 为了获得更清晰的日志,进度条不再显示在非交互式运行中。
--json
和--debug
默认为NULL
,以便不覆盖CONDA_JSON
和CONDA_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-wasm32
和wasi-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
的任务,利用了libmamba
的add_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 标准的每个subdir
的run_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 位 (!) 新贡献者;感谢我们所有的开源社区成员,感谢他们帮助使这些改进成为可能。
- @boldorider4 在 conda-build#4960 中做出了他们的首次贡献
- @DaveKaretnyk 在 conda-build#5004 中做出了他们的首次贡献
- @dholth 在 pycosat#54 中做出了他们的首次贡献
- @jmcarpenter2 在 conda#13034 中做出了他们的首次贡献
- @Mon-ius 在 conda#12811 中做出了他们的首次贡献
- @otaithleigh 在 conda#13035 中做出了他们的首次贡献
- @psteyer 在 conda#11610 中做出了他们的首次贡献
- @scdub 在 conda-build#4965 中做出了他们的首次贡献
- @tarcisioe 在 conda#9614 中做出了他们的首次贡献
- @wolfv 在 conda#13095 和 conda-build#4813 中做出了他们的首次贡献
- @zeehio 在 conda#13075 中做出了他们的首次贡献
如果您有任何想法或想帮助改进任何 conda 社区项目,我们非常欢迎新的(和回访的)贡献者! 😄