2024 年 9 月发布
·9 分钟阅读
2024 年 9 月的发布包括对 conda、conda-build 和 conda-libmamba-solver 的更新!🎉 所有这些都已发布到 main
和 conda-forge
频道。
Conda 的变更 24.9.0/24.9.1
要更新 conda,请运行
conda install -n base conda=24.9.1
✨ 特别公告 ✨
这是一项关于 conda 功能中重要的和积极的未来变化的公告
根据 conda 用户关于 conda 代码库预配置为偏向 Anaconda Inc 频道的反馈,我们已经开始弃用在 conda 源代码中硬编码 Anaconda 频道作为默认频道集的过程,这是 conda 在该公司孵化遗留下来的。
未来,我们将依赖 conda 发行版的提供商,例如 miniforge 或 Anaconda(包括 miniconda),来预配置他们首选的频道,例如通过运行必要的 conda config --set channels
命令。
我们还将继续致力于改进频道管理在可预见的未来,并希望得到您的反馈。
✨ 新增功能? ✨
- 添加
conda.core.index.Index
作为已实现字典索引的更快的即插即用替代品。注意:在获取索引时,记录器不再隐式初始化。相反,您必须显式调用conda.gateways.logging.initialize_logging
。 - 将
conda env remove
命令别名为conda remove --all
。 - 向
conda doctor
添加新的健康检查,以检测REQUESTS_CA_BUNDLE
环境变量是否指向不存在的文件。 - 向
conda list --explicit
添加--sha256
标志,以便它列出带有 SHA256 哈希而不是 MD5 的 URL,并使conda install|create
与这些输入兼容。 - 报告用于生成
@EXPLICIT
文本文件的conda
版本。 - 更新健康检查输出以保持一致性。
- 修复 Windows 到 Unix 路径转换以处理 UNC 挂载和根路径。
- 添加新的
denylist_channels
配置选项和CONDA_DENYLIST_CHANNELS
环境变量,以显式拒绝全局使用特定频道,这是对已存在的allowlist_channels
配置选项的补充。 - 添加
conda commands
子命令。 - 添加
conda.testing.fixtures.session_capsys
。使用它来捕获模块、包和会话范围内的 fixtures 中的 stdout 和 stderr。 - 添加
conda.testing.fixtures.session_conda_cli
。使用它来在模块、包和会话范围内的 fixtures 中调用 conda 命令。 - 添加
conda.testing.fixtures.session_tmp_env
。使用它来在模块、包和会话范围内的 fixtures 中创建 conda 环境。
🔧 修复了什么? 🔧
- 防止包含 conda 环境的目录在创建新环境时被指定为环境前缀;这提供了针对通过
conda rename
等命令意外删除环境的保护措施。 - 启用
conda doctor
以在尝试生成健康报告之前检查环境是否存在。 - 修复
conda.common.configuration.ObjectParameter
适当处理默认值的能力。 conda remove [env] --all
命令不再删除已移除环境的空父目录。- 尝试删除不存在的环境时引发错误。
- 向激活子命令(
activate
、deactivate
、reactivate
、hooks
和commands
)添加 pre-/post-command 钩子。 - 仅从文件名末尾替换扩展名,而不是
str.replace()
,在两个地方。 - 修复 PowerShell 激活/停用以使用
$Env:VARIABLE = $null
而不是$Env:VARIABLE = ""
正确取消设置环境变量。 - (24.9.1) 微调即将到来的频道默认值更改的待定弃用警告。
🌅 哪些被弃用或标记为未来弃用? 🌅
- 将
conda.core.index.get_index
标记为待定弃用。请改用conda.core.index.Index
。 - 将
conda.core.index.get_reduced_index
标记为待定弃用。请改用conda.core.index.ReducedIndex
。 - 将
conda.core.index.fetch_index
标记为待定弃用。请改用conda.core.index.Index
。 - 将
conda.core.index._supplement_index_with_prefix
标记为待定弃用。请改用conda.core.index.Index.reload
。 - 将
conda.core.index._supplement_index_with_cache
标记为待定弃用。请改用conda.core.index.Index.reload
。 - 将
conda.core.index._supplement_index_with_features
标记为待定弃用。请改用conda.core.index.Index.reload
。 - 将
conda.core.index._supplement_index_with_system
标记为待定弃用。请改用conda.core.index.Index.reload
。 - 将
conda.core.index._make_virtual_package
标记为待定弃用。请改用conda.models.records.PackageRecord.virtual_package
。 - 将
conda.core.subdir_data.make_feature_record
标记为待定弃用。请改用conda.models.records.PackageRecord.feature
。 - 将
conda.plugins.manager.CondaPluginManager.get_virtual_packages
标记为待定弃用。请改用conda.plugins.manager.CondaPluginManager.get_virtual_package_records
。 - 将
conda.misc.explicit(index_args)
标记为待定弃用。 - 将
conda.cli.main_rename.validate_destination
标记为待定弃用。请改用conda.cli.install.validate_new_prefix
。 - 将
conda.cli.main_env_remove.execute
标记为待定弃用。请改用conda.cli.main_remove.execute
。 - 将
conda.activate.path_identity
标记为待定弃用。请改用conda.common.path.path_identity
。 - 将
conda.utils.path_identity
标记为待定弃用。请改用conda.common.path.path_identity
。 - 将
conda.models.leased_path_entry
标记为待定弃用。 - 将
conda.base.context.Context.conda_exe
的移除推迟到conda 25.3
。 - 将
conda.cli.python_api
的移除推迟到conda 25.9
。 - 移除
conda._vendor.appdirs
。请改用platformdirs
。 - 移除
conda._vendor.cpuinfo
。 - 移除
conda._vendor.distro
。请改用distro
。 - 移除
conda.auxlib.collection.call_each
。 - 移除
conda.auxlib.collection.firstitem
。 - 移除
conda.auxlib.compat.NoneType
。 - 移除
conda.auxlib.compat.primitive_types
。 - 移除
conda.auxlib.compat.utf8_writer
。 - 移除
conda.auxlib.exceptions.AssignmentError
。 - 移除
conda.auxlib.exceptions.AuthenticationError
。 - 移除
conda.auxlib.exceptions.InitializationError
。 - 移除
conda.auxlib.exceptions.NotFoundError
。 - 移除
conda.auxlib.exceptions.SenderError
。 - 移除
conda.auxlib.type_coercion.boolify_truthy_string_ok
。 - 移除
conda.auxlib.type_coercion.listify
。 - 移除
conda.base.context.Context.root_dir
。请改用conda.base.context.Context.root_prefix
。 - 移除
conda.base.exceptions
。 - 移除
conda.cli.main.generate_parser
。请改用conda.cli.conda_argparse.generate_parser
。 - 移除
conda.cli.main.init_loggers(context)
。 - 移除
conda.cli.main_rename.validate_src(name)
。 - 移除
conda.cli.main_rename.validate_src(prefix)
。 - 移除
conda.common.configuration.load_file_configs
。 - 移除
conda.common.decorators.env_override
。 - 移除
conda.common.decorators
。 - 移除
conda.common.disk.temporary_content_in_file
。请改用tempfile
。 - 移除
conda.core.package_cache_data.download
。请改用conda.gateways.connection.download.download
。 - 移除
conda.core.package_cache_data.rm_fetched
。 - 移除
conda.core.package_cache
。请改用conda.core.package_cache_data
。 - 移除
conda.core.prefix_data.PrefixData._has_python
。 - 移除
conda.core.subdir_data.get_cache_control_max_age
。请改用conda.gateways.repodata.get_cache_control_max_age
。 - 移除
conda.exports.fetch_index
。请改用conda.core.index.fetch_index
。 - 移除
conda.exports.IndexRecord
。请改用conda.models.records.PackageRecord
。 - 移除
conda.gateways.anaconda_client.EnvAppDirs
。请改用platformdirs
。 - 移除
conda.gateways.connection.adapters.ftp.FTPAdapter.stor
。 - 移除
conda.gateways.connection.adapters.ftp.parse_multipart_files
- 移除
conda.gateways.logging.set_verbosity
。请改用conda.gateways.logging.set_log_level
。 - 移除
conda.gateways.logging.VERBOSITY_LEVELS
。 - 移除
conda.models.dist.IndexRecord
。请改用conda.models.records.PackageRecord
。 - 移除
conda.models.enums.LeasedPathType
。 - 移除
conda.models.leased_path_entry.LeasedPathEntry
。 - 移除
conda.plugins.subcommands.doctor.get_prefix
。请改用conda.base.context.context.target_prefix
。 - 移除
conda.plugins.subcommands.doctor.health_checks.display_health_checks
。 - 移除
conda.plugins.subcommands.doctor.health_checks.display_report_heading
。 - 移除
conda.testing.helpers.set_active_prefix
。请改用mocker.patch('conda.base.context.Context.active_prefix')
。 - 移除
tests.env.utils.run_command
。请改用conda_cli
fixture。 - 将
tests.env.utils.make_temp_envs_dir
标记为待定弃用。请改用tmp_envs_dir
fixture。 - 将
conda.gateways.disk.delete.rm_rf(max_retries)
标记为待定弃用。 - 将
conda.gateways.disk.delete.rm_rf(trash)
标记为待定弃用。 - 将
conda.gateways.disk.delete.try_rmdir_all_empty
标记为待定弃用。请改用conda.gateways.disk.delete.rm_rf
。 - 将
conda.gateways.disk.delete.move_to_trash
标记为待定弃用。请改用conda.gateways.disk.delete.rm_rf
。 - 将
conda.gateways.disk.delete.move_path_to_trash
标记为待定弃用。请改用conda.gateways.disk.delete.rm_rf
。 - 将
conda.exports.move_to_trash
标记为待定弃用。请改用conda.gateways.disk.delete.rm_rf
。 - 将
conda.activate.ensure_binary
标记为待定弃用。请改用conda.common.compat.ensure_binary
。 - 将
conda.activate.ensure_fs_path_encoding
标记为待定弃用。 - 将
conda.common.compat.six_with_metaclass
标记为待定弃用。请改用 class 的metaclass=
关键字参数。 - 将
conda.common.compat.open
标记为待定弃用。请改用conda.common.compat.open_utf8
。 - 将
conda.common.compat.ensure_unicode
标记为待定弃用。 - 将
conda.common.compat.ensure_fs_path_encoding
标记为待定弃用。 - 将
conda.common.compat.FILESYSTEM_ENCODING
标记为待定弃用。 - 将
conda.activate.native_path_to_unix
标记为待定弃用。请改用conda.common.path.win_path_to_unix
。 - 将
conda.activate.unix_path_to_native
标记为待定弃用。请改用conda.common.path.unix_path_to_win
。 - 将
conda.activate._Cygpath
标记为待定弃用。请改用conda.common.path._cygpath
。 - 将
conda.activate._Cygpath.RE_UNIX
标记为待定弃用。请改用conda.common.path._cygpath.RE_WIN_DRIVE
。 - 将
conda.activate._Cygpath.translate_unix
标记为待定弃用。请改用conda.common.path._cygpath._to_unix_drive
。 - 将
conda.activate._Cygpath.RE_DRIVE
标记为待定弃用。请改用conda.common.path._cygpath.RE_UNIX_DRIVE
。 - 将
conda.activate._Cygpath.translation_drive
标记为待定弃用。请改用conda.common.path._cygpath._to_win_drive
。 - 将
conda.activate._Cygpath.RE_MOUNT
标记为待定弃用。请改用conda.common.path._cygpath.RE_UNIX_MOUNT
。 - 将
conda.activate._Cygpath.translation_mount
标记为待定弃用。请改用conda.common.path._cygpath._to_win_mount
。 - 将
conda.activate._Cygpath.RE_ROOT
标记为待定弃用。请改用conda.common.path._cygpath.RE_UNIX_ROOT
。 - 将
conda.activate._Cygpath.translation_root
标记为待定弃用。请改用conda.common.path._cygpath._to_win_root
。 - 将
conda.utils.unix_path_to_win
标记为待定弃用。请改用conda.common.path.unix_path_to_win
。 - 弃用
conda.env.specs.binstar
模块。 - 弃用
conda env [create|update] REMOTE_DEFINITION
。请改用conda env [create|update] --file=URL
。 - 将
conda.testing.integration.BIN_DIRECTORY
标记为待定弃用。请改用conda.common.path.BIN_DIRECTORY
。 - 将
conda.common.path.get_bin_directory_short_path()
标记为待定弃用。请改用conda.common.path.BIN_DIRECTORY
。 - 将
conda.common.path.is_private_env_name
标记为待定弃用。 - 将
conda.common.path.is_private_env_path
标记为待定弃用。 - 将
conda shell.SHELL commands
标记为待定弃用。请改用conda commands
。 defaults
多频道将不再是channels
的(隐式)默认值。鼓励依赖此行为的用户运行conda config --add channels defaults
。这是待定弃用,将在 25.3 中完全弃用。- 当隐式添加
defaults
时,conda config --add/--append channels ...
将发出警告。在conda 25.3
中,此行为将被移除,如果需要,用户应显式运行conda config --add/--append channels defaults
。像 miniforge 或 miniconda 这样的 Conda 发行版安装程序将在安装期间预配置 conda 频道。 - 如果没有显式的
channels
配置(通过condarc
文件、环境变量或 CLI 标志),conda 将警告隐式使用defaults
。在 25.3 中,将使用空列表。 - 将
restore_free_channel
配置选项标记为待定弃用。在defaults
之后将https://repo.anaconda.com/pkgs/free
添加到您的频道列表。 - 将
conda.testing.CondaCLIFixture
标记为待定弃用。请改用conda.testing.fixtures.CondaCLIFixture
。 - 将
conda.testing.conda_cli
标记为待定弃用。请改用conda.testing.fixtures.conda_cli
。 - 将
conda.testing.PathFactoryFixture
标记为待定弃用。请改用conda.testing.fixtures.PathFactoryFixture
。 - 将
conda.testing.path_factory
标记为待定弃用。请改用conda.testing.fixtures.path_factory
。 - 将
conda.testing.TmpEnvFixture
标记为待定弃用。请改用conda.testing.fixtures.TmpEnvFixture
。 - 将
conda.testing.tmp_env
标记为待定弃用。请改用conda.testing.fixtures.tmp_env
。 - 将
conda.testing.TmpChannelFixture
标记为待定弃用。请改用conda.testing.fixtures.TmpChannelFixture
。 - 将
conda.testing.tmp_channel
标记为待定弃用。请改用conda.testing.fixtures.tmp_channel
。 - 将
conda.testing.context_aware_monkeypatch
标记为待定弃用。请改用conda.testing.fixtures.context_aware_monkeypatch
。 - 将
conda.testing.tmp_pkgs_dir
标记为待定弃用。请改用conda.testing.fixtures.tmp_pkgs_dir
。 - 将
conda.testing.tmp_envs_dir
标记为待定弃用。请改用conda.testing.fixtures.tmp_envs_dir
。 - (24.9.1) 移除已弃用的测试入口点
shell/bin/conda
。请改用dev/start[.bat]
。
📄 文档中的新增功能? 📄
- 记录
conda [env] create
的--platform
标志。
其他
- 更新
xonsh
支持以适应已弃用的导入路径。
Conda-Build 的变更 24.9.0
要更新 conda-build,请运行
conda install -n base conda-build=24.9.0
✨ 新增功能? ✨
- 当存在大量未使用的变体时,减少渲染时间。
🔧 修复了什么? 🔧
- 确保在
script_env
中提到的变量在多输出构建环境中未定义,如果它们在调用conda-build
的环境中未定义。 - 在单行 jinja2
for
和set
语句中使用的变量现在已正确包含在某些边缘情况的变体矩阵中。 - 当特定元数据块评估为跳过时,允许未定义的 jinja 变量。
🌅 哪些被弃用或标记为未来弃用? 🌅
- 移除
conda_build.build.check_external
。patchelf
是 Linux 上的显式 conda-build 依赖项,因此它将始终安装。 - 移除
conda_build.metadata._get_env_path
。请改用conda.base.context.locate_prefix_by_name
。 - 移除
conda_build.build._construct_metadata_for_test_from_recipe
。测试已构建的包,而不是配方(例如,conda build --test package
而不是conda build --test recipe/
)。
Conda-Libmamba-Solver 的变更 24.9.0
要更新 conda-libmamba-solver,请运行
conda install -n base conda-libmamba-solver=24.9.0
🔧 修复了什么? 🔧
- 使用 Solver 实例配置来初始化 libmamba 上下文,而无需隐式依赖 conda 上下文设置。
- 修复 conda-build 兼容性回归,其中如果首先构建了 noarch 输出,则无法在测试阶段找到特定于架构的输出。
📄 文档中的新增功能? 📄
- 添加带有 conda-standalone 的安装解决方法 FAQ。
- 更新用户指南以反映 conda-libmamba-solver 是 conda 中的默认 solver。
- 包括 mamba-org/mamba 作为设置开发环境所需的克隆存储库。
我们 ❤️ 我们的社区
总共,在这个发布周期我们有 4 位新的贡献者;感谢我们所有的开源社区成员帮助实现这些改进。
- @anki-code 首次贡献于 conda#14047
- @SylvainCorlay 首次贡献于 conda#14226
- @jjhelmus 首次贡献于 conda-libmamba-solver#528
- @justmarkham 首次贡献于 conda-libmamba-solver#510