Mac下Python版本管理,适用于pyenv不起作用的情况
前言
声明:之前也在网上看到过可以使用pyenv来管理python版本,但由于作者的python安装路径实在是繁杂不堪,因此安装完成pyenv体验下来没有任何用处,但偶然发现vscode似乎可以看到各个python版本,因此写下这篇博客记录。
正文
最近学习python,发现自己之前稀里糊涂安装过好多个python版本,如图:

这其中有一部分是安装conda自带的python版本,还有一部分是使用homebrew安装的,还有一部分有可能是我在安装一些软件时自动下载了指定版本的python依赖。
从图中可以看出,python版本主要分为python 3.9、python 3.11、python 3.12和python 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就是那时候安装的。

再看剩下的版本,可以分成三份来理解:
- 红色框中实际只有两个版本——python 3.13.0和python 3.12.4('base’和‘miniconda’本质上是同一个),一个来自homebrew,一个来自miniconda
- 绿色框中是homebrew中的python3.12版本
- 黄色框中是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版本
相关文章:
Mac下Python版本管理,适用于pyenv不起作用的情况
前言 声明:之前也在网上看到过可以使用pyenv来管理python版本,但由于作者的python安装路径实在是繁杂不堪,因此安装完成pyenv体验下来没有任何用处,但偶然发现vscode似乎可以看到各个python版本,因此写下这篇博客记录…...
Ubuntu 服务器Llama Factory 搭建DeepSeek-R1微调训练环境
1.首先了解一下什么是LLM微调 LLM 微调指的是在已经预训练好的大型语言模型基础上,使用特定的任务数据或领域数据,通过进一步的训练来调整模型的参数,使其在特定任务或领域上能够表现得更好。简单来说,就是对一个已经具备了丰富语…...
【redis】redis内存管理,过期策略与淘汰策略
一:Redis 的过期删除策略及处理流程如下: 1. 过期删除策略 Redis 通过以下两种策略删除过期键: 1.1 惰性删除 触发时机:当客户端访问某个键时,Redis 会检查该键是否过期。执行流程: 客户端请求访问键。…...
RabbitMQ学习—day6—死信队列与延迟队列
目录 死信队列 1. 死信的概念 2. 死信的来源 实战演练 1. 消息TTL过期 2. 队列达到最大长度 3. 消息被拒绝 延迟队列 概念 使用场景 TTL的两种设置 死信队列 1. 死信的概念 1.1 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的…...
seacmsv9联合注入数据以及绕过 ORDERBY
seacmsv9联合注入数据 php源码 <?php session_start(); require_once("../../include/common.php"); $id (isset($gid) && is_numeric($gid)) ? $gid : 0; $page (isset($page) && is_numeric($page)) ? $page : 1; $type (isset($type) …...
day58 第十一章:图论part08
拓扑排序精讲 关键: 先找到入度为0的节点,把这些节点加入队列/结果,然后依次循环再找。 #include <iostream> #include <vector> #include <queue> #include <unordered_map> using namespace std; int main() {int …...
网络安全-openssl工具
OpenSSl是一个开源项目,包括密码库和SSL/TLS工具集。它已是在安全领域的事实标准,并且拥有比较长的历史,现在几乎所有的服务器软件和很多客户端都在使用openssl,其中基于命令行的工具是进行加密、证书管理以及测试最常用到的软件。…...
Java面试第六山!《MySQL基础知识点》
一、引言 MySQL 作为一款广泛使用的开源关系型数据库管理系统,在软件开发领域占据着重要地位。无论是小型项目还是大型企业级应用,都能看到 MySQL 的身影。今天就来和大家分享 MySQL 的相关知识,帮助大家更好地应对日常开发和面试。 二、My…...
云计算中的API网关是什么?为什么它很重要?
在云计算架构中,API网关(API Gateway)是一个重要的组件,主要用于管理、保护和优化不同服务之间的接口(API)通信。简单来说,API网关就像是一个中介,它充当客户端和后端服务之间的“桥…...
【WebGL】fbo双pass案例
双pass渲染案例(离线渲染一个三角面,然后渲染到一个占满屏幕的矩阵上) 离线渲染如何需要开启深度测试的话,需要额外操作,这里不展开 <!DOCTYPE html> <html lang"en"><head><meta ch…...
Unity面板介绍_层级面板(23.1.1)
一、Inspector(检视面板) 显示当前选定游戏对象附加的组件及其属性信息。为重要游戏物体选择图标 二、面板详情...
详解Nginx 配置
一、Nginx 介绍 Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件(IMAP/POP3)代理服务器。它由俄罗斯的程序设计师 Igor Sysoev 所开发,自 2004 年发布以来,凭借其高性能、低内存消耗、高并发处理能力等特点…...
数据库系统概念
1. 绪论 数据库的基本概念: 数据(data): 数据库中存储的基本对象, 可以是文字, 声音, 图片, 视频等。 数据库(DB): 概括来说就是永久存储, 有组织, 可共享的大量数据的集合。 数据库管理系统(DBMS): 和操作系统一样是计算机基础软件, 主要有数据定义语言(DDL, 对数据对象的组…...
51单片机学习之旅——定时器
打开软件 1与其它等于其它,0与其它等于0 1或其它等于1,0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作,高四位保持,低四位清零,高四位定时器1,低四位定时器0 TMODTMOD|0x01;//0x010000 0…...
一台服务器将docker image打包去另一天服务器安装这个镜像
一台服务器将docker image打到去另一天服务器安装这个镜像 1. 打包2.另一台服务器执行 1. 打包 docker save -o nebula-graph-studio.tar harbor1.vm.example.lan/dockerio/vesoft/nebula-graph-studioxxx.tar 是打包好的文件 后面的是 docker image 2.另一台服务器执行 docke…...
QT串口通信之二,实现单个温湿度传感器数据的采集(采用Qt-modbus实现)
接上 QT串口通信之一,实现单个温湿度传感器数据的采集 上述文章中用QSerialPort实现了温湿度传感器的采集,实际上比较麻烦的,因为需要自定义解析帧, 接下来,用Qt-modbus-封装度更高的协议,来实现温湿度的采集; #include "MainWindow.h" #include "ui_M…...
基于SpringBoot的校园消费点评管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
【小沐学Java】VSCode搭建Java开发环境
文章目录 1、简介2、安装VSCode2.1 简介2.2 安装 3、安装Java SDK3.1 简介3.2 安装3.3 配置 4、安装插件Java Extension Pack4.1 简介4.2 安装4.3 配置 结语 1、简介 2、安装VSCode 2.1 简介 Visual Studio Code 是一个轻量级但功能强大的源代码编辑器,可在桌面上…...
《操作系统 - 清华大学》8 -4:进程管理:进程控制结构
深度剖析进程控制块:操作系统进程管理的核心关键 在操作系统的复杂体系中,进程控制块(PCB)是实现高效进程管理的关键所在。接下来,将从多个维度深入剖析进程控制块,帮助更好地理解其在操作系统中的重要作用…...
RPC 框架项目剖析
RPC 框架项目剖析 说明 本文用于梳理一个 rpc项目的实现细节,此项目基于cpp语言 大概三千行左右,用于学习目的。 项目链接:rpc项目 项目底层类 1.抽象消息类 描述: 各种消息的基类 属性: 消息id,消息类型…...
FPGA设计里选乘法器IP还是写RTL?从面积、时序和易用性帮你决策
FPGA乘法器设计决策指南:IP核与RTL方案的深度权衡 在数字信号处理、通信系统和图像处理等FPGA应用领域,乘法器作为基础运算单元,其实现方式直接影响着系统性能、资源占用和开发效率。面对Xilinx/Altera提供的成熟IP核与自己编写RTL代码这两种…...
HarmonyOS原子化服务:轻量化应用的未来形态
这里写自定义目录标题HarmonyOS原子化服务:轻量化应用的未来形态引言:移动应用范式的第三次革命第一章:原子化服务的哲学思辨与技术演进1.1 从“应用商店”到“服务生态”的范式转移1.2 原子化服务的技术架构演进第二章:服务卡片&…...
从4G到Wi-Fi 6:OFDM自适应技术是如何让你刷视频不卡顿的?
从4G到Wi-Fi 6:OFDM自适应技术如何重塑你的无线体验 每次在地铁里刷短视频,或是用咖啡厅Wi-Fi开视频会议时,你是否好奇过:为什么同样的网络环境下,有些人的画面流畅如丝,而你的却卡成PPT?这背后…...
从SOT-23到SOT-963:手把手教你识别和选用那些长得像的SMD晶体管封装
从SOT-23到SOT-963:手把手教你识别和选用那些长得像的SMD晶体管封装 在物联网设备和小型化电子产品设计中,SMD晶体管封装的选择往往让人头疼。那些看似相同的微型封装,实际上在尺寸、引脚排列和散热性能上存在微妙差异。一位资深工程师曾告诉…...
用PYNQ-Z2开发板玩转ZYNQ XADC:手把手教你监控芯片温度与电压(附完整SDK代码)
PYNQ-Z2实战:XADC温度电压监控系统开发全指南 刚拿到PYNQ-Z2开发板时,我第一件事就是检查芯片的工作状态——温度是否正常?供电电压是否稳定?这些关键参数直接关系到系统的可靠性。Xilinx在ZYNQ芯片中内置的XADC模块(X…...
Spring WebFlux实战:手把手教你用WebFilter和Context实现全局请求日志追踪
Spring WebFlux全链路追踪实战:从WebFilter到Reactor Context的深度设计 当微服务架构遇上响应式编程,传统的日志追踪方案突然变得力不从心。想象这样一个场景:某电商平台大促期间,订单服务突然出现异常响应延迟,但当你…...
实时可视化组件设计
实时可视化组件设计:数据驱动的交互艺术 在当今数据爆炸的时代,实时可视化组件已成为企业决策、用户体验和系统监控的核心工具。无论是金融交易大盘、智能工厂的流水线监控,还是社交媒体的实时热点分析,动态可视化的高效呈现直接…...
你的 Vue v-model,VuReact 会编译成什么样的 React 代码?
VuReact 是一个能将 Vue 3 代码编译为标准、可维护 React 代码的工具。今天就带大家直击核心:Vue 中常见的 v-model 指令经过 VuReact 编译后会变成什么样的 React 代码? 前置约定 为避免示例代码冗余导致理解偏差,先明确两个小约定&#x…...
避开这3个坑,你的OpenCV Python项目运行效率能快一倍
OpenCV Python性能优化实战:避开这3个效率黑洞 在计算机视觉项目的开发过程中,性能瓶颈往往隐藏在看似无害的代码片段里。当你的视频处理流水线开始卡顿,或是内存占用莫名飙升时,问题可能源于一些容易被忽视的编码习惯。本文将深入…...
Qt文件操作避坑指南:QFile与QTextStream/QDataStream的最佳搭配方案
Qt文件操作避坑指南:QFile与QTextStream/QDataStream的最佳搭配方案 在Qt开发中,文件操作是每个开发者都会遇到的基础需求。无论是配置文件读写、数据持久化还是日志记录,都离不开对文件系统的操作。Qt提供了QFile、QTextStream和QDataStream…...
