跳至主要内容

2024 年 7 月版本

·阅读时间:7 分钟
Bianca Henderson
Conda 维护者 🐍📦

2024 年 7 月版本包含对 conda、conda-build 和 conda-libmamba-solver 的更新!🎉 这些版本都已发布到 mainconda-forge 通道。

Conda 中的变更 24.7.0/24.7.1

要更新 conda,请运行

conda install -n base conda=24.7.1

✨ 新功能 ✨

  • 添加一个新的 reporters 设置,用于配置输出。
  • 在详细程度为 2 或更高(-vv 或更多)的情况下,报告插件加载错误的回溯信息。
  • conda doctor 的“缺少文件”健康检查中,跳过对 .pyc.pyo 文件的检查。
  • 重大变更 conda list --explicit 默认情况下不会打印身份验证详细信息。已添加一个新标志 --auth,以便用户可以选择此行为。
  • 打印 @EXPLICIT 锁定文件安装的交易报告。
  • 如果 conda create 使用 --dry-run 调用,则不需要 -n/--name-p/--prefix
  • 添加 envvars_force_uppercase 设置,该设置默认值为 True,将所有环境变量大写(从而证明 conda 的当前行为合理);当 envvars_force_uppercase 设置为 False 时,conda 仅保存保留大小写的变量名称。
  • conda env list 命令别名为 conda info --envs
  • 将对 logger.warn 的调用替换为 logger.warning

🔧 已修复的问题 🔧

  • 改进对日志记录级别的处理。
  • conda-meta/*.json 元数据中屏蔽身份验证详细信息。
  • 在详细日志中屏蔽 Anaconda.org 令牌。
  • 修复历史记录文件仅包含单行注释时发生的解析错误。
  • 将缺少的 emscriptenwasi 条目添加到已识别的平台中,并将 wasm32 添加到已识别的体系结构中。
  • 修复 conda.gateways.connection.download.download() 中的校验和比较,使其不区分大小写。
  • 修复 repodata.json 包含 \r\n 行尾时发生的缓存问题。
  • 修复 conda.core.portability.binary_replace 未匹配以 \n 结尾的块的问题。
  • (24.7.1) 撤销对允许的环境名称字符的限制增加。以前禁止的字符(^, %, !, =, (, ), )再次允许使用,直到评估其影响为止。

🌅 已标记为弃用的功能? 🌅

  • conda.gateways.logging.initialize_root_logger 标记为即将弃用。
  • conda.cli.main_env_list.execute 标记为即将弃用。请改用 conda.cli.main_info.execute
  • 撤销 conda info 中的 --all 弃用。
  • conda.exports.iteritems 标记为即将弃用。请改用内置的 dict.items()
  • conda.exports.Completer 标记为即将弃用。
  • conda.exports.InstalledPackages 标记为即将弃用。
  • conda.exports.KEYS 标记为即将弃用。
  • conda.exports.KEYS_DIR 标记为即将弃用。
  • conda.exports.hash_file 标记为即将弃用。
  • conda.exports.verify 标记为即将弃用。
  • conda.exports.symlink_conda 标记为即将弃用。请改用 conda.activate
  • conda.exports._symlink_conda_hlp 标记为即将弃用。请改用 conda.activate
  • conda.exports.win_conda_bat_redirect 标记为即将弃用。请改用 conda.activate
  • conda.utils.win_path_to_cygwin 标记为即将弃用。请改用 conda.common.path.win_path_to_unix
  • conda.utils.cygwin_path_to_win 标记为即将弃用。请改用 conda.utils.unix_path_to_win
  • conda.utils.translate_stream 标记为即将弃用。
  • conda.utils.unix_shell_base 标记为即将弃用。请改用 conda.activate
  • conda.utils.msys2_shell_base 标记为即将弃用。请改用 conda.activate
  • conda.utils.shells 标记为即将弃用。请改用 conda.activate

📄 文档中的新功能 📄

  • 在文档中阐明代理服务器配置。
  • conda.core.envs_manager 中添加类型提示和文档字符串。
  • 添加日志记录概述作为深入探讨内容。
  • 更新 conda 速查表文本,并将其直接添加到速查表页面。
  • 将更新后的速查表 PDF 下载添加到速查表页面。
  • 在用户指南中添加 ssl_verify: truststore
  • 修复 satisfied-skip-solve 标志的帮助文本。
  • 添加一个部分,解释如何从插件中正确引发异常。
  • 添加一篇新文章,介绍如何配置 envs_dirspkgs_dirs

Conda-Build 中的变更 24.7.0/24.7.1

要更新 conda-build,请运行

conda install -n base conda-build=24.7.1

✨ 新功能 ✨

  • 跳过为本地索引生成 repodata.json.bz2;仅生成 repodata.json;要求 conda-package-handling >=2.2.0 与 conda 匹配。
  • 在多输出 outputs/files 中,为 glob 表达式添加新的包含/排除部分。
  • 通过使用 pickle 而不是 copy.deepcopy 来提高性能。
  • 在构建过程开始之前,将完全渲染的配方报告到标准输出。
  • 验证 run_constrained 依赖项,以防止错误的规范到达最终的 repodata。
  • 在多输出配方中构建输出时,设置 PIP_* 环境变量。
  • 减少日志记录的性能开销。
  • 不要为常见异常生成 conda 错误报告。
  • 添加 CondaBuildUserError 异常以替换 sys.exit 调用。
  • 更新了 CI,以下载 MacOSX 10.15 SDK。

🔧 已修复的问题 🔧

  • 在生成文件哈希时,除了内容之外,还包括文件路径,以避免在链接分析期间发生意外的缓存。
  • LIEF 失败时的错误处理现在与 patchelf 一致。
  • 确保交叉构建配方选择正确的 noarch 包变体。
  • 在 Linux 平台上,交叉编译时优先使用与目标平台匹配的 sysroot。
  • (24.7.1) 在调用 pathlib.Path.samefile/os.stat 之前,检查 WSL 是否存在。

🌅 已标记为弃用的功能? 🌅

  • conda_build.build._construct_metadata_for_test_from_recipe 标记为已弃用。请改用测试构建的包,而不是配方(例如,conda build --test package 而不是 conda build --test recipe/)。
  • conda_build.build.check_external 标记为已弃用。patchelf 是 Linux 上显式的 conda-build 依赖项,因此它将始终安装。
  • 删除以下弃用内容
    • conda_build.config.Config.override_channels(请改用 conda.base.context.context.channels)。
    • conda_build.config.noarch_python_build_age_default.
    • conda_build.conda_interface.add_parser_channels(请改用 conda.cli.helpers.add_parser_channels)。
    • conda_build.conda_interface.add_parser_prefix(请改用 conda.cli.helpers.add_parser_prefix)。
    • conda_build.conda_interface.ArgumentParser(请改用 conda.cli.conda_argparse.ArgumentParser)。
    • conda_build.conda_interface.binstar_upload(请改用 conda.base.context.context.binstar_upload)。
    • conda_build.conda_interface.cc_conda_build(请改用 conda.base.context.context.conda_build)。
    • conda_build.conda_interface.cc_platform(请改用 conda.base.context.context.platform)。
    • conda_build.conda_interface.Channel(请改用 conda.models.channel.Channel)。
    • conda_build.conda_interface.Completer.
    • conda_build.conda_interface.configparser(请改用 configparser)。
    • conda_build.conda_interface.CondaError(请改用 conda.exceptions.CondaError)。
    • conda_build.conda_interface.CondaHTTPError(请改用 conda.exceptions.CondaHTTPError)。
    • conda_build.conda_interface.CondaSession(请改用 conda.gateways.connection.session.CondaSession)。
    • conda_build.conda_interface.CONDA_VERSION(请改用 conda.__version__)。
    • conda_build.conda_interface.context(请改用 conda.base.context.context)。
    • conda_build.conda_interface.create_default_packages(请改用 conda.base.context.context.create_default_packages)。
    • conda_build.conda_interface.default_python(请改用 conda.base.context.context.default_python)。
    • conda_build.conda_interface.determine_target_prefix(请改用 conda.base.context.determine_target_prefix)。
    • conda_build.conda_interface.download(请改用 conda.gateways.connection.download.download)。
    • conda_build.conda_interface.env_path_backup_var_exists.
    • conda_build.conda_interface.envs_dirs(请改用 conda.base.context.context.envs_dirs)。
    • conda_build.conda_interface.EntityEncoder(请改用 conda.auxlib.entity.EntityEncoder)。
    • conda_build.conda_interface.FileMode(请改用 conda.models.enums.FileMode)。
    • conda_build.conda_interface.get_conda_build_local_url(请改用 conda.models.channel.get_conda_build_local_url)。
    • conda_build.conda_interface.get_conda_channel(请改用 conda.models.channel.Channel.from_value)。
    • conda_build.conda_interface.get_prefix(请改用 conda.base.context.context.target_prefix)。
    • conda_build.conda_interface.get_rc_urls(请改用 conda.base.context.context.channels)。
    • conda_build.conda_interface.human_bytes(请改用 conda.utils.human_bytes)。
    • conda_build.conda_interface.import_module(请改用 importlib.import_module)。
    • conda_build.conda_interface.input(请改用 input)。
    • conda_build.conda_interface.InstalledPackages.
    • conda_build.conda_interface.lchmod(请改用 conda.gateways.disk.link.lchmod)。
    • conda_build.conda_interface.LinkError(请改用 conda.exceptions.LinkError)。
    • conda_build.conda_interface.LockError(请改用 conda.exceptions.LockError)。
    • conda_build.conda_interface.MatchSpec(请改用 conda.models.match_spec.MatchSpec)。
    • conda_build.conda_interface.non_x86_linux_machines(请改用 conda.base.context.non_x86_machines)。
    • conda_build.conda_interface.NoPackagesFound(请改用 conda.exceptions.ResolvePackageNotFound)。
    • conda_build.conda_interface.NoPackagesFoundError(请改用 conda.exceptions.NoPackagesFoundError)。
    • conda_build.conda_interface.normalized_version(请改用 conda.models.version.normalized_version)。
    • conda_build.conda_interface.os(请改用 os)。
    • conda_build.conda_interface.PackageRecord(请改用 conda.models.records.PackageRecord)。
    • conda_build.conda_interface.PaddingError(请改用 conda.exceptions.PaddingError)。
    • conda_build.conda_interface.partial(请改用 functools.partial)。
    • conda_build.conda_interface.PathType(请改用 conda.models.enums.PathType)。
    • conda_build.conda_interface.pkgs_dirs(请改用 conda.base.context.context.pkgs_dirs)。
    • conda_build.conda_interface.prefix_placeholder(请改用 conda.base.constants.PREFIX_PLACEHOLDER)。
    • conda_build.conda_interface.ProgressiveFetchExtract (请使用 conda.core.package_cache_data.ProgressiveFetchExtract 代替)。
    • conda_build.conda_interface.reset_context (请使用 conda.base.context.reset_context 代替)。
    • conda_build.conda_interface.Resolve (请使用 conda.resolve.Resolve 代替)。
    • conda_build.conda_interface.rm_rf (请使用 conda_build.utils.rm_rf 代替)。
    • conda_build.conda_interface.root_dir (请使用 conda.base.context.context.root_prefix 代替)。
    • conda_build.conda_interface.root_writable (请使用 conda.base.context.context.root_writable 代替)。
    • conda_build.conda_interface.spec_from_line (请使用 conda.cli.common.spec_from_line 代替)。
    • conda_build.conda_interface.specs_from_args (请使用 conda.cli.common.specs_from_args 代替)。
    • conda_build.conda_interface.specs_from_url (请使用 conda.cli.common.specs_from_url 代替)。
    • conda_build.conda_interface.StringIO (请使用 io.StringIO 代替)。
    • conda_build.conda_interface.subdir (请使用 conda.base.context.context.subdir 代替)。
    • conda_build.conda_interface.symlink_conda.
    • conda_build.conda_interface.TemporaryDirectory (请使用 conda.gateways.disk.create.TemporaryDirectory 代替)。
    • conda_build.conda_interface.TmpDownload (请使用 conda.gateways.connection.download.TmpDownload 代替)。
    • conda_build.conda_interface._toposort (请使用 conda.common.toposort._toposort 代替)。
    • conda_build.conda_interface.unix_path_to_win (请使用 conda.utils.unix_path_to_win 代替)。
    • conda_build.conda_interface.untracked (请使用 conda.misc.untracked 代替)。
    • conda_build.conda_interface.Unsatisfiable (请使用 conda.exceptions.UnsatisfiableError 代替)。
    • conda_build.conda_interface.UnsatisfiableError (请使用 conda.exceptions.UnsatisfiableError 代替)。
    • conda_build.conda_interface.url_path (请使用 conda.utils.url_path 代替)。
    • conda_build.conda_interface.VersionOrder (请使用 conda.models.version.VersionOrder 代替)。
    • conda_build.conda_interface.walk_prefix (请使用 conda.misc.walk_prefix 代替)。
    • conda_build.conda_interface.win_path_to_unix (请使用 conda.common.path.win_path_to_unix 代替)。
    • conda_build.index.channel_data; conda_build.index.get_build_indexchannel_data 的返回值现在始终为 None
    • conda_build.metadata.check_circular_dependencies (请使用 conda_build.metadata._check_circular_dependencies 代替)。
    • conda_build.metadata.toposort (请使用 conda_build.metadata.toposort_outputs 代替)。
    • conda_build.utils._convert_lists_to_sets (请使用 frozendict.deepfreeze 代替)。
    • conda_build.utils.HashableDict (请使用 frozendict.deepfreeze 代替)。
    • conda_build.utils.represent_hashabledict (请使用 frozendict.deepfreeze 代替)。
    • conda_build.utils.rm_rf(config).
    • conda_build.variants.get_vars(loop_only).

Conda-Libmamba-Solver 中的变更 24.7.0

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

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

✨ 新功能 ✨

  • 使用 devcontainers 记录开发工作流程。
  • 为本地开发工作流程添加 DevContainer 配置。

🔧 修复 🔧

  • 允许在包名称中使用通配符来执行 conda remove(例如 conda remove "python-*")。
  • 避免在使用频道固定规范(如 channel::package)时重复列出频道。
  • 修复了 .solv repodata 缓存文件在可用时未加载导致的性能回归。
  • 不要忽略虚拟包作为输入规范。
  • 固定 libmambapy <2 以防御即将到来的 API 变更。

我们 ❤️ 我们的社区

总的来说,我们在本发布周期中有 9 位新贡献者!感谢我们所有开源社区成员,使这些改进成为可能。

如果您有任何想法或想帮助改进任何 conda 社区项目,我们很乐意看到新的(和回归的)贡献者!😄