当前位置: 首页 > news >正文

Mac下Python版本管理,适用于pyenv不起作用的情况

前言

声明:之前也在网上看到过可以使用pyenv来管理python版本,但由于作者的python安装路径实在是繁杂不堪,因此安装完成pyenv体验下来没有任何用处,但偶然发现vscode似乎可以看到各个python版本,因此写下这篇博客记录。

正文

最近学习python,发现自己之前稀里糊涂安装过好多个python版本,如图:

在这里插入图片描述

这其中有一部分是安装conda自带的python版本,还有一部分是使用homebrew安装的,还有一部分有可能是我在安装一些软件时自动下载了指定版本的python依赖。

从图中可以看出,python版本主要分为python 3.9python 3.11python 3.12python 3.13

从下图也可以看出确实如此:
在这里插入图片描述

在这里插入图片描述

不妨让我们观察一下图中各个python的安装路径,让我们先把目光放在最底下那个python 3.9.6上,这个python的安装路径有点意思,是在/usr/bin目录下,看起来像是系统自带的,在网上搜了一下,还真是,以下是我截取的一部分解释:

macOS在/usr/bin/下会有python3是由于历史遗留问题、系统兼容性需求、应用程序依赖以及方便开发者。macOS 系统长期以来都预装了 Python 环境,以支持一些基于 Python 的系统功能及应用程序。随着 Python 2 的退役,现代操作系统,包括 macOS,逐渐把标准的Python环境迁移到了 Python 3。系统兼容性需求使得 Apple 不得不在其系统中集成 Python 3 环境,以确保所有依赖Python 3的应用可以在没有用户手动安装Python环境的情况下正常运行。此外,将其放置于/usr/bin/目录下能够让系统用户及开发者方便地使用Python环境,而无需进行额外的配置。
原文链接

在这里插入图片描述

再让我们看向倒数第三个python 3.11.4版本的安装路径,是在/usr/local/bin目录下,这又是哪来的,我网上搜罗了一番,还真被我找到了原因,以下是一段摘要:

Homebrew官方脚本会根据是否是Arm64架构判断mac系统的芯片为Intel或者M1来选择安装路径为/usr/local/或者/opt/Homebrew/
原文链接

也就是说在早先年苹果从intel芯片过渡到m芯片的时候,homebrew的软件安装路径发生了从/usr/local/opt/homebrew的变化,而我正是在23年的时候安装过一次python,可能这个/usr/local下的python就是那时候安装的。

在这里插入图片描述

再看剩下的版本,可以分成三份来理解:

  1. 红色框中实际只有两个版本——python 3.13.0和python 3.12.4('base’和‘miniconda’本质上是同一个),一个来自homebrew,一个来自miniconda
  2. 绿色框中是homebrew中的python3.12版本
  3. 黄色框中是homebrew中的python3.9版本

我心里有些疑惑,为什么homebrew/bin目录下有三个不同版本的python呢,于是我使用brew info @python[版本号]查看了三个版本python的信息,如下图所示:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
3.9和3.12版本都是在2024年10月9日先后安装的,而3.13版本则是在2024年11月30日安装的,由于之前基本没有怎么折腾过python,因此鉴定为可能是homebrew更新自动安装的。

至此,所有的python来源都已经分析清楚,也算是实现人脑管理python版本了,以后有时间还是整个版本管理工具吧,太费事了。

=============================================
补档,pyenv问题已解决:解决pyenv versions没有列出系统的python版本

http://www.lryc.cn/news/542042.html

相关文章:

  • Ubuntu 服务器Llama Factory 搭建DeepSeek-R1微调训练环境
  • 【redis】redis内存管理,过期策略与淘汰策略
  • RabbitMQ学习—day6—死信队列与延迟队列
  • seacmsv9联合注入数据以及绕过 ORDERBY
  • day58 第十一章:图论part08
  • 网络安全-openssl工具
  • Java面试第六山!《MySQL基础知识点》
  • 云计算中的API网关是什么?为什么它很重要?
  • 【WebGL】fbo双pass案例
  • Unity面板介绍_层级面板(23.1.1)
  • 详解Nginx 配置
  • 数据库系统概念
  • 51单片机学习之旅——定时器
  • 一台服务器将docker image打包去另一天服务器安装这个镜像
  • QT串口通信之二,实现单个温湿度传感器数据的采集(采用Qt-modbus实现)
  • 基于SpringBoot的校园消费点评管理系统
  • 【小沐学Java】VSCode搭建Java开发环境
  • 《操作系统 - 清华大学》8 -4:进程管理:进程控制结构
  • RPC 框架项目剖析
  • C++ Boost面试题大全及参考答案
  • 关于Transparent native-to-ascii conversion
  • js数据类型检测
  • go 模块管理
  • 记一次复杂分页查询的优化历程:从临时表到普通表的架构演进
  • 基于 Python 的项目管理系统开发
  • java面试场景问题
  • JS宏实例:数据透视工具的制作(四)
  • 5. Go 方法(结构体的方法成员)
  • 20250223学习记录
  • WPS携手DeepSeek:开启智能办公新时代