Ubuntu 22.10下pyenv 2.3.17安装Python版本时出现下载失败错误
Ubuntu 22.10下pyenv 2.3.17安装Python版本时出现下载失败错误
我来帮你搞定这个问题!你遇到的curl: (23) Failure writing output to destination错误,大概率是下载过程中写入文件出了问题,结合你的Ubuntu 22.10环境,咱们可以试试下面几个办法:
更新pyenv及相关组件
你当前用的python-build版本是20180424,版本太老了,和新系统可能存在兼容性问题。先更新pyenv:cd ~/.pyenv git pull更新完成后再重新运行
pyenv install 3.7.0,看看能不能正常下载。手动下载源码包到pyenv缓存目录
如果自动下载一直失败,咱们可以手动把Python源码包放到pyenv的缓存里,让它跳过下载步骤直接安装:- 先创建缓存目录(如果不存在的话):
mkdir -p ~/.pyenv/cache - 手动下载Python 3.7.0的源码包到这个目录,你可以用浏览器直接下载后拖进去,或者用curl命令指定输出路径:
curl -L https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz -o ~/.pyenv/cache/Python-3.7.0.tar.xz - 再次运行
pyenv install 3.7.0,这时候pyenv会自动读取缓存里的文件,不用再下载了。
- 先创建缓存目录(如果不存在的话):
检查磁盘空间与权限
curl的23错误也可能是/tmp目录空间不足,或者没有写入权限。先看看/tmp的剩余空间:df -h /tmp如果空间不够,清理一下/tmp里的临时文件就行。另外注意不要用sudo运行pyenv,因为pyenv是用户级工具,sudo会改变环境变量,反而导致命令找不到,用普通用户身份操作就好。
安装Python编译依赖
老版本的Python在Ubuntu 22.10上编译需要一些系统依赖,缺失的话也可能间接导致安装失败,先把这些依赖装上:sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl git装完之后再尝试安装Python 3.7.0。
备注:内容来源于stack exchange,提问作者noskule




