程序媛的mac修炼手册-- 如何彻底卸载Python

啊,前段时间因为想尝试chatgpt的API,需要先创建一个python虚拟环境来安装OpenAI Python library.

结果,不出意外的出意外了,安装好OpenAI Python library后,因为身份认证问题,根本就没有获取API key的权限😂😂得,一顿操作猛如虎,结果全在自找堵。

然而,删了OpenAI Python library后,为其创建的python虚拟环境影响到了Mac的python环境配置。总之,不同的python环境开始打架了,代码是一点跑不了啊。

无奈,卸载重装Python,成为最迅捷的解决路径。可是,OpenAI Python library的python虚拟环境安装位置,和其他Python文件的安装位置不一致,导致我在卸载Python 过程中总是卸不干净,以下是卸载Python的经验历程血泪教训😂

目录

一、常规卸载Python路径

二、补充卸载Python路径

三、使用Homebrew卸载Python


前情提要:这里咱们主要针对的是,Monterey 12.3 及以后版本的macOS,如何彻底卸载自装的Python。Monterey 12.3及更早版本的macOS,系统预装了Python2,那是无法卸载的。

一、常规卸载Python路径

1、首先,在「应用程序」直接找到Python图标,然后「移到废纸篓」;

2、接下来,在「终端(terminal)」使用删除命令来删除Python的环境配置文件,通常在根用户目录下需要三条命令行来删:

rm -rf  /Applications/Python

3、如果你的Mac上装有多个版本的Python,那么这时候需要打开Python的环境配置文件夹,删除需要卸载的Python版本相关文件。

方法是:
打开“「访达(Finder)」“➡️ 点击Mac左上角的访达导航栏,点击 Go➡️在下拉框中选择Go to Folder ➡️ 然后在弹出的窗口中输入并选择“/Library/Frameworks/Python.framework”
打开Python.framework文件夹后,找到你需要删除的python版本文件夹。这时先打开「终端(terminal)」,敲下删除命令sudo rm -rf,然后把python版本文件夹拖到terminal中,如下图所示:(这一步需要输入验证管理员权限的密码)

如果你的Mac上只装有1个版本的Python,那在「终端(terminal)」使用以下删除命令,也可以得到相同效果。

rm -rf  /Library/Frameworks/Python.framework 
rm -rf  /usr/local/bin/python

 完成上述操作后,通常Mac上的Python就被卸载干净了。这时,在「终端(terminal)」中输入命令后,

python3 --version

会出现下图所示的反馈:

这说明,Mac上的python已经卸载干净了。

二、补充卸载Python路径

当然,也有人和我一样,完成上述常规卸载操作后,Mac上的Python稳如老狗。这时候就需要去犄角旮旯里找到Python的配置文件,进行一一删除。

谁能想到,我最终是执行以下命令,才把Python卸载干净的。😭😭
sudo rm -rf  /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework
sudo rm -rf /Library/Developer/CommandLineTools/usr/bin/python3

每个人的情况不一样,咱们接下来讲基本方法。

最迅捷的方法是,打开「聚焦搜索(Spotlight Search)」,输入”python“,看看Mac上是否还有python相关文件。类似地,把相关文件拖到「终端(terminal)」中看文件储存路径,然后执行删除命令sudo rm -rf(空格)+ 文件路径。

Python安装通常会将可执行文件添加到/usr/local/bin文件夹中。上述步骤删除Python文件后,还需要删除任何匹配的Python可执行文件或syslink(到它的终端快捷方式),以避免以后出现兼容性问题。

要删除这些可执行文件,请打开「终端(terminal)」,并在终端中输入以下命令:

ls -l /usr/local/bin | grep ‘python’ 

上述命令执行后,将列出/usr/local/bin目录中所有包含单词‘python’的文件。找到你想卸载的Python版本相关联的文件,输入以下命令行,将file_name替换为你要删除的文件的实际名称。

sudo rm -rf /usr/local/bin/file_name


此时,你选择的Python版本的所有相关文件都将被删除。重复执行这些步骤,以删除与你要卸载的特定版本相关联的每个Python相关文件。

三、使用Homebrew卸载Python

如果你是用Homebrew在Mac上安装的Python,则可以按照以下步骤使用Homebrew卸载Python。

打开终端应用程序,键入并运行以下命令

brew list

这将列出你之前通过Homebrew安装的任何已安装软件包(例如,python@3.11代表Python 3.11),如下图所示:

要卸载这些Python软件包,需要在终端中键入并运行以下命令:

brew uninstall python_package

将python_package替换为你在上一步骤中识别出的正确软件包名称(例如,brew uninstall python@3.9)。

在删除软件包之后,键入并运行以下命令,以删除任何其他(现在不再需要的)文件。

brew cleanup python_package

将python_package替换为正确的名称(例如,brew cleanup python@3.9)。

到目前为止,使用Homebrew安装的Python版本已被移除。但是,如果你安装了多个版本的Python,可能需要重复这些步骤来移除下一个版本。

卸载干净了,是时候重装Python了,安装请参考这篇文章:
程序媛的mac修炼手册--小白入门Python篇-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shader基础的简单实现(基于URP渲染)

一个模型是很多个顶点组成,顶点数据中包含坐标、法线、切线、UV坐标、顶点颜色等等组成。 URP(Universal Render Pipeline)通用渲染管线,是Unity在2019.3版本之后推出的一种新的渲染管线。传统的渲染管线在渲染多光源的情况,是把每一个主要光…

C语言第二十八弹---整数在内存中的存储

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、整数在内存中的存储 2、大小端字节序和字节序 2.1、什么是大小端? 2.2、为什么有大小端? 2.3、练习 2.3.1、练习1 2.3.2、练习2 2.…

Java 注解机制解密并发编程的时间之谜:揭开Happens-Before的神秘面纱

优质博文:IT-BLOG-CN 一、简介 为什么需要happens-before原则: 主要是因为Java内存模型 , 为了提高CPU效率,通过工作内存Cache代替了主内存。修改这个临界资源会更新work memory但并不一定立刻刷到主存中。通常JMM会将编写的代码…

Pytorch 复习总结 2

Pytorch 复习总结,仅供笔者使用,参考教材: 《动手学深度学习》Stanford University: Practical Machine Learning 本文主要内容为:Pytorch 线性神经网络。 本文以机器学习中的两大基本问题 —— 回归和分类为例,介绍…

【数据结构初阶 6】二叉树:堆的基本操作 + 堆排序的实现

文章目录 🌈 Ⅰ 二叉树的顺序结构🌈 Ⅱ 堆的概念与性质🌈 Ⅲ 堆的基本操作01. 堆的定义02. 初始化堆03. 堆的销毁04. 堆的插入05. 向上调整堆06. 堆的创建07. 获取堆顶数据08. 堆的删除09. 向下调整堆10. 判断堆空 🌈 Ⅳ 堆的基本…

【selenium】八大元素定位方式|xpath css id name...

目录 一、基础元素定位 二、cssSelector元素定位——通过元素属性定位 三、xpath元素定位——通过路径 1 、xpath绝对定位 (用的不多) 缺点:一旦页面结构发生变化(比如重新设计时,路径少两节)&#x…

从计网的角度讲明白什么是网关

网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连…

JDBC实现连接池

简单上手 使用 JDBC 来执行 SQL 查询和更新操作 import java.sql.*;public class Main {public static void main(String[] args) {String url "jdbc:mysql://localhost:3306/your_database_name";String username "your_username";String password &…

vs2015零基础编译zlib从失败到成功

本博文源于笔者不断尝试从0编译zlib到能够将文件打包成zip的一个简单过程,其中包含了如何下载zlib,如何编译zlib,如何使用zlib等。内容堪比教科书级别,可以收藏,可以自用,希望博文能帮助到读者。 1、下载z…

Protocol Buffers v21.12 安装 ( linux 系统 )

下载 Protocol Buffers v21.12 Protocol Buffers v21.12 解压 tar zxvf protobuf-cpp-3.21.12.tar.gz执行 进入解压目录,执行下面configure可执行程序,目的是监测安装环境,生成makefile ./configure执行完后可以检查是否生成makefile文件 构…

Unity单元测试

Unity单元测试是一个专门用于嵌入式单元测试的库, 现在简单讲下移植以及代码结构. 源码地址: GitHub - ThrowTheSwitch/Unity: Simple Unit Testing for C 1.我们只需要移植三个文件即可: unity.c, unity.h, unity_internals.h 2.然后添加需要测试的函数. 3.在main.c中添加…

Swift基础知识:23.Swift析构过程

在 Swift 中,析构过程是指在一个类的实例被释放之前进行的清理操作。通常,这些清理操作包括释放实例所持有的资源、取消订阅通知、关闭文件等。Swift 使用析构器(deinitializer)来实现析构过程,它类似于构造器&#xf…

公司文件防泄密管理系统

公司文件防泄密管理系统是一种综合性的解决方案,旨在确保企业文件的安全性和保密性,防止内部员工或外部攻击者非法获取、泄露或篡改敏感信息。 PC端:https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是关于…

【JavaEE】_form表单构造HTTP请求

目录 1. form表单的格式 1.1 form表单的常用属性 1.2 form表单的常用搭配标签:input 2. form表单构造GET请求实例 3. form表单构造POST请求实例 4. form表单构造法的缺陷 对于客户端浏览器,以下操作即构造了HTTP请求: 1. 直接在浏览器…

IDM下载器2024中文版主要功能、使用场景、优点、缺点介绍

软件分析师眼中的IDM(Internet Download Manager) IDM绿色下载如下: https://wm.makeding.com/iclk/?zoneid34275 一、主要功能 高速下载:利用多线程技术和文件分块下载策略,显著提高下载速度。断点续传:即使在下载…

【Linux】MySQL数据库的使用

【Linux】MySQL数据库的使用 一、访问MySQL数据库二、创建及删除库和表1、创建新的库2、创建新的表3、删除一个数据表4、删除一个数据库 三、管理表中的数据记录1、插入数据记录2、查询数据记录3、修改数据记录4、删除数据记录 四、数据库用户授权1、授予权限2、查看权限3、撤销…

db-gpt docker部署进坑

1.docker 不支持gpu,参考之前文章 2.docker 容器启动就关闭,docker ps -a 查看容器状态为exited 停止 定位问题: (1) 查看日志 docker logs dbgpt -f (2) 日志错误最后一行: V…

《图解HTTP》笔记1:http的诞生

1,http的诞生: 1.1 为共享知识而生 我们现在使用web(World Wide Web的简称,即万维网)浏览器,目前可以输入一个网址(http://www.baidu.com),就会有一个网页显示出来。 最开始设想出…

jenkins远程触发构建报:Error 403 No valid crumb was included in the request

最近在跨jenkins触发构建的时候发现不能触发相应的项目,报如下图错误 解决方案: 1、安装Build Authorization Token Root Plugin插件 安装完成后去配置API Token,用户列表,配置用户的API Token,生成后记得保存 2、项…

YOLOv9来啦!YOLO目标检测全新工作!性能表现SOTA!在各个方面都大大超过了RT-DETR、YOLOv8等

摘要 今天的深度学习方法侧重于如何设计最合适的目标函数,使模型的预测结果最接近实际情况。同时,必须设计一种适当的架构,该架构可以促进获取足够的信息用于预测。现有的方法忽略了一个事实,即当输入数据经过逐层特征提取和空间…