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版本

相关推荐
jsjzsl21 分钟前
独立自由度框架下位置自由度的本体论特征、物理现象与新技术路径
python·flask·fastapi
z_mazin6 分钟前
逆向一种私有二进制序列化格式:从零到字节级解析器
网络·python·网络协议·算法·rpc
luj_17686 分钟前
罚球线右移破防新策略
c语言·开发语言·网络·经验分享·算法
威联通安全存储16 分钟前
TS-h1290FX 在模具制造设计与CAM场景的部署
python·制造
legendary_16317 分钟前
PD‑SINK芯片在无协议后端负载中的工程应用
c语言·开发语言·人工智能·智能手机·计算机外设
Nuanyt20 分钟前
JVM常见核心知识梳理02 类加载 字节码技术 双亲委派 Java内存模型 JMM 并发底层 volatile synchronized 常见排障与调优工具
java·开发语言·jvm
liliangcsdn37 分钟前
IC计算-前向/远期收益计算和代码示例
开发语言·python·pandas
2601_962381861 小时前
python安装好了如何设置环境变量
python·开发工具·环境变量·虚拟环境·ide配置
小溪学编程1 小时前
Java ListIterator 接口详解:双向遍历与列表修改的利器
java·开发语言·windows
影视飓风TIM1 小时前
C++11 新特性:Lambda表达式、std::function与std::bind
开发语言·c++