如何中mac上安装多版本python并配置PATH

摘要

mac 默认安装的python是 python3,但是如果我们需要其他python版本时,该怎么办呢?
例如:需要python2 版本,如果使用homebrew安装会提示没有python2。同时使用python --version 会发现commond not found

所以本文主要解决以下几个问题:

  1. 在mac上如何安装各种版本的python。
  2. 在mac上如何管理多个版本的python。
  3. 在mac上如何切换python版本。
  4. 在mac的终端执行:python --version  提示 commond not  found 问题。
  5. 在mac上如何配置环境变量PATH。
  6. 在mac上为什么需要配置PATH。

简介:

为了解决上述问题,我们会使用homebrew  安装 pyenv。pyenv 是一个管理python的工具。pyenv官方地址:https://github.com/pyenv/pyenv。当然python 版本管理工具还有其他各种各类的,大家可以根据自身实际情况决定使用哪个。本文主要使用pyenv。以及解决没有python commnond问题。解释为什么需要配置PATH。PATH的作用等等。
python 官方地址:https://www.python.org/downloads/macos/

安装

  • 使用homebrew 安装pyhton 管理工具 pyenv。homebrew安装教程
brew install pyenv

如果觉得安装缓慢,或者总是失败可以切换homebrew的镜像源。不适用外网,使用内网。

配置pyenv 的PATH

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

📢  该配置可在.bash_profile、.zshrc等文件中添加,根据实际情况进行添加。apple  芯片需要在.zshrc添加 。 inter  芯片 是 .bash_profile。

PYENV_ROOT="$HOME/.pyenv" 

当你在终端(terminal)中执行pyenv init时会自行配置,就是声明一个变量PYENV_ROOT。$HOME 指的是当前用户根目录。

export PATH="$PYENV_ROOT/bin:$PATH"

$PYENV_ROOT  是指的上一步设置的路径的变量,再加上bin,即指的pyenv的可执行路径。
:$PATH   是指在后面追加原来PATH设置的路径,如果不追加会把前面的PATH值给覆盖了。

把pyenv 的可执行路径设置到shell查找路径中。当执行pyenv时,会按照所配置的路径进行查找可执行文件。

eval "$(pyenv init -)"

    1. 设置环境变量:它会设置必要的环境变量,包括 PYENV_ROOT,该变量指定 Pyenv 的根目录,通常设置为 Pyenv 安装的目录。

    2. 启用 Pyenv shims:Pyenv 使用一个称为 "shim" 的机制来拦截并重定向 Python 命令。pyenv init 会确保这些 shims 位于 Shell 的 PATH 中,以便 Pyenv 可以拦截和解析您运行的 Python 命令,以确保使用正确的 Python 版本。

    3. 提供版本管理功能:它启用版本管理功能,允许您使用 pyenv global、pyenv local 和 pyenv shell 等命令来选择和切换不同的 Python 版本。

重新加载 .zshrc 

source  ~/.zshrc

📢  .zshrc 文件主要是为了shell与系统进行会话时,会根据.zshrc配置查找对应的执行文件。

修改.zshrc 后,配置生效的方式主要有三个:

  1. 在终端执行  source  ~/.zshrc  指令,会重新加载.zshrc ,是配置立即生效。
  2. 关闭当前终端,重新打开一个新的终端,也可以使新的配置生效
  3. 电脑开机时,会自动执行 .zshrc ,  使配置生效。

检验 pyenv 

pyenv -v

安装 python

  • 显示可安装的版本
pyenv  install  -l   
  • 安装指定python
pyenv  install 3.9.1

 切换版本

  • 全局切换
pyenv global 3.9.1
  • 局部切换
pyenv local 3.9.1

局部安装python,在不同项目中需要使用不同的python时非常有用。在当前项目目录下,会在当前根目录下自动生成一个.python-version文件。

查看python版本

python --version
python
  • 输出

查看pyenv 相关指令

pyenv help

pyenv 相关API 

   --version  查看pyenv版本号

   global      全局设置python  

   init        启用pyenv的 配置

   install     安装python  

   local       设置局部python版本

   uninstall   卸载python

   version     查看当前设置的python版本

   version-name   当前使用的python 名字

   versions   列出pyenv可用的所有Python版本

   which       显示指定python 的完整可执行路径

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

POI-TL制作word

本文相当于笔记,主要根据官方文档Poi-tl Documentation和poi-tl的使用(最全详解)_JavaSupeMan的博客-CSDN博客文章进行学习(上班够用) Data AllArgsConstructor NoArgsConstructor ToString EqualsAndHashCode public …

[杂谈]-2023年实现M2M的技术有哪些?

2023年实现M2M的技术有哪些? 文章目录 2023年实现M2M的技术有哪些?1、寻找连接2、M2M与IoT3、流行的 M2M 协议 在当今的数字世界中,机器对机器 (M2M) 正在迅速成为标准。 M2M 包括使联网设备能够交换数据或信息的任何技术。 它可以是有线或无…

ESLint 中的“ space-before-function-paren ”相关报错及其解决方案

ESLint 中的“ space-before-function-paren ”相关报错及其解决方案 出现的问题及其报错: 在 VScode 中,在使用带有 ESLint 工具的项目中,保存会发现报错,并且修改好代码格式后,保存会发现代码格式依然出现问题&…

HTTP介绍:一文了解什么是HTTP

前言: 在当今数字时代,互联网已经成为人们生活中不可或缺的一部分。无论是浏览网页、发送电子邮件还是在线购物,我们都离不开超文本传输协议(HTTP)。HTTP作为一种通信协议,扮演着连接客户端和服务器的重要角…

OpenCV(十四):ROI区域截取

在OpenCV中,你可以使用Rect对象或cv::Range来截取图像的感兴趣区域(Region of Interest,ROI)。 方法一:使用Rect对象截取图像 Rect_(_Tp _x, _Tp _y, _Tp _width,_Tp _height) Tp:数据类型&…

数据库(MySQL)的存储过程

一、存储过程介绍 存储过程是事先经过编译并存储在数据库中的一段SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单&#xff0…

失效的访问控制漏洞复现(dvwa)

文章目录 失效访问控制是什么?dvwa漏洞复现用未授权访问获取shell 代码审计 失效访问控制是什么? 由于缺乏自动化的检测和应用程序开发人员缺乏有效 的功能测试,因而访问控制缺陷很常见。导致攻击者可以冒充用户、管理员或拥有特权的用户&…

Shell自动化日志维护脚本

简介: 系统日志对于了解操作系统的运行状况、故障排除和性能分析至关重要。然而,长期积累的日志文件可能变得庞大,影响系统性能。在这篇文章中,我们将介绍一个自动化的解决方案,使用 Bash 脚本来监控和维护系统日志文件…

编译KArchive在windows10下

使用QT6和VS2019编译KArchive的简要步骤: 安装 Qt ,我是用源码自己编译的 "F:\qtbuild"安装CMakefile并配置环境变量安装Git下载ECM源码 https://github.com/KDE/extra-cmake-modules.git-------------------------------------------------…

【业务功能篇94】微服务-springcloud-springboot-认证服务-注册功能-第三方短信验证API

商城认证服务 一、搭建认证服务环境 结合我们前面介绍的商城的架构我们需要单独的搭建一个认证服务。 1.创建项目 首先创建一个SpringBoot项目&#xff0c;然后添加对应的依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"htt…

ELK日志收集系统(四十九)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、组件 1. elasticsearch 2. logstash 2.1 工作过程 2.2 INPUT 2.3 FILETER 2.4 OUTPUTS 3. kibana 三、架构类型 3.1 ELK 3.2 ELKK 3.3 ELFK 3.5 EF…

kubesphere安装Maven+JDK17 流水线打包

kubesphere 3.4.0版本&#xff0c;默认支持的jav版本是8和11&#xff0c;不支持17 。需要我们自己定义JenKins Agent 。方法如下&#xff1a; 一、构建镜像 1、我们需要从Jenkins Agent的github仓库拉取master最新源码&#xff0c;最新源码里已经支持jdk17了。 git clone ht…

C语言常见字符串和内存函数详解

字符串和内存函数 1. 前言2. 求字符串长度2.1 strlen 3. 长度不受限制的字符串函数3.1 strcpy3.2 strcat3.3 strcmp 4. 长度受限制的字符串函数4.1 strncpy4.2 strncat4.3 strncmp 5. 字符串查找5.1 strstr5.2 strtok 6. 错误信息报告6.1 strerror 7. 字符操作函数7.1 字符分类…

程序员自由创业周记#2:前期准备

感恩 上次公开了创业的决定后&#xff0c;得到了很多亲朋好友和陌生朋友的鼓励或支持&#xff0c;以不同的形式&#xff0c;感动之情溢于言表。这些都会记在心里&#xff0c;大恩不言谢~ 创业方向 笔者是一名资质平平的iOS开发程序猿&#xff0c;创业项目也就是开发App卖&am…

iPhone 14四款机型电池容量详细参数揭秘

苹果推出的iPhone 14系列与2021系列的设计和外形尺寸相同&#xff08;仅缩小了几分之一毫米&#xff09;&#xff0c;所以这并不奇怪&#xff0c;但电池容量也大致相同。 虽然可能不足以对电池寿命产生可衡量的影响&#xff0c;但也存在微小的差异。不同的是&#xff0c;现在有…

水果库存系统(SSM+Thymeleaf版)

不为失败找理由&#xff0c;只为成功找方法。所有的不甘&#xff0c;因为还心存梦想&#xff0c;所以在你放弃之前&#xff0c;好好拼一把&#xff0c;只怕心老&#xff0c;不怕路长。 文章目录 一、前言二、系统架构与需求分析1、技术栈1.1 后端1.2 前端 2、需求分析 三、设计…

创建性-构造者设计模式

前言 我们在使用Retrofit等这些第三方框架的时候&#xff0c;发现他们的使用都很方便&#xff0c;比如Retrofit retrofit new Retrofit.Builder().build()&#xff0c;和我们通常直接new一个对象不同&#xff0c;他是交给Builder类&#xff0c;通过build()函数来构造一个Retro…

【python使用 Pillow 库】缩小|放大图片

当我们处理图像时&#xff0c;有时候需要调整图像的大小以适应特定的需求。本文将介绍如何使用 Python 的 PIL 库&#xff08;Pillow&#xff09;来调整图像的大小&#xff0c;并保存调整后的图像。 环境准备 在开始之前&#xff0c;我们需要安装 Pillow 库。可以使用以下命令…

并发测试工具 apache-jmeter使用发送post请求JSON数据

目录 1 下载安装 2 汉化 3 创建高并发测试 配置线程组 创建web请求 创建监听器 结果树 汇总报告 为web请求添加token 添加Content-Type用于发送json 4 启动测试 5 查看结果 1 下载安装 官网Apache JMeter - Download Apache JMeter 解压运行 2 2 汉化 打开软件…

神经网络--感知机

感知机 单层感知机原理 单层感知机:解决二分类问题&#xff0c;激活函数一般使用sign函数,基于误分类点到超平面的距离总和来构造损失函数,由损失函数推导出模型中损失函数对参数 w w w和 b b b的梯度&#xff0c;利用梯度下降法从而进行参数更新。让1代表A类&#xff0c;0代…