关于Conda安装requirements.txt中非PyPI语法及包缺失问题的咨询
问题解答
1. 非PyPI语法的含义
你看到的certifi=2024.2.2=py311h06a4308_0是conda专属的精确包标识格式,拆分后各部分意义:
certifi:包名2024.2.2:包版本号py311h06a4308_0:构建字符串,其中:py311:表示该包适配Python 3.11版本h06a4308:平台/编译环境的哈希标识(对应特定系统架构、编译参数)0:构建编号(同一版本多次编译的区分号)
这种格式是通过conda env export命令导出的,包含了特定平台、Python版本的精准构建信息,和PyPI的pip格式(name==version)完全不同。
2. 安装失败的解决方法
你遇到PackagesNotFoundError的核心原因是:作者导出的requirements.txt是针对他的平台(大概率是x86_64架构)生成的,而你使用的是osx-arm64(苹果M系列芯片),跨平台后这些精准构建包无法匹配,加上部分包可能不在你当前的通道里。具体操作步骤:
步骤1:简化requirements.txt内容
删除每个包后面的构建字符串部分,只保留包名=版本号格式,比如把certifi=2024.2.2=py311h06a4308_0改成certifi=2024.2.2。这样conda会自动搜索适配你osx-arm64平台的可用构建版本。
步骤2:添加必要的conda通道
除了defaults和conda-forge,部分科学计算类包可能在bioconda通道,执行以下命令添加通道并设置优先级:
# 添加常用通道 conda config --add channels bioconda conda config --add channels conda-forge conda config --add channels defaults # 设置通道优先级(conda-forge优先,避免版本冲突) conda config --set channel_priority strict
步骤3:重新创建环境
使用简化后的requirements.txt执行创建命令:
conda create --name multid_features --file simplified_requirements.txt
备选方案:手动指定包安装
如果简化后仍有部分包找不到,可以直接指定包名和版本手动安装,比如:
# 先创建空环境 conda create --name multid_features python=3.11 # 安装指定包 conda install -n multid_features certifi=2024.2.2 pandas=2.2.1 ...
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

