Step1:完整报错
Executing transaction: failed
ERROR conda.core.link:_execute(502): An error occurred while installing package
'conda-forge::setuptools-65.5.1-pyhd8ed1ab_0'.
FileNotFoundError(2, '系统找不到指定的文件。', None, 2, None)
Step2:问题描述
① 跟着李沐老师创建 d2l-zh
环境:
conda create -n d2l-zh python=3.8.5 pip
说明:原视频仅设置为 python=3.8,我为了避免麻烦,进一步指明为 python=3.8.5,与老师的 Python 版本保持一致。
② 运行命令后 Anaconda 给出了将要安装的包的版本:
③ 确认继续后发生报错:
大意是指:在安装 ‘conda-forge::setuptools-65.5.1-pyhd8ed1ab_0’ 时发生错误,问题在于 ‘系统找不到指定的文件。’
也就是说,Anaconda 在 conda-forge 源中找不到待安装的包 setuptools-65.5.1-pyhd8ed1ab_0,因此我们很自然地想到是镜像源的问题。
Step3:分析问题
① 此前我配置了清华源,.condarc
配置文件如下:
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
show_channel_urls: true
default_channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
根据上述配置:
conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
可以看出 ‘conda-forge’ 源其实就是一个清华源。而在 ‘conda-forge’ 源中找不到待安装的包,其实就是在 ‘http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud’ 中找不到待安装的包。
② 查看 清华源 (请点击链接) 中对应于 python3.8.5 且可以安装的 setuptools
包,不需要点击下载,记住它的版本号即可:
不难看出,有很多个版本的
setuptools
可用,我只是挑了一个有眼缘的。
Step4:解决问题
① 删除此前创建失败的 d2l-zh
环境:
conda remove -n d2l-zh --all
Anaconda 会说没有该环境:
请不要被它骗了,它其实并没有把文件夹删干净;不删干净会导致下次创建环境报错!来到 Anaconda 的安装目录,进入其中的 envs
目录,手动删除 d2l-zh
文件夹即可:
② 在指明版本号的前提下重新创建 d2l-zh
环境:
conda create -n d2l-zh python=3.8.5 pip setuptools=49.6.0 certifi=2020.6.20
说明:之所以指定
certifi
的版本号,是因为它也遇到了和setuptools
一样的报错。由于 Anaconda 不会一次性把错误报完,因此我们可能会重复创建、删除、创建的操作 😇
环境创建成功:
完结撒花 🥳🥳🥳
昨天搞了一晚上都没有解决这个问题,甚至试图通过 environment.yml
文件来创建环境,结果又遇到了新的报错。今天复盘了原始报错结果、分析了镜像源配置文件,才发现是清华源不给力的问题。