Mac managing Multiple Python Versions With pyenv 【 mac pyenv 管理多个python 版本 】

2023-12-19 12:36

本文主要是介绍Mac managing Multiple Python Versions With pyenv 【 mac pyenv 管理多个python 版本 】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1. 简介
    • 2. 安装
      • 2.1 brew 安装 pyenv
      • 2.2 脚本安装
    • 3. pyenv 安装 Python
    • 4. 卸载 python
    • 5. 管理 python

1. 简介

Pyenv 是一个用于管理和切换多个 Python 版本的工具。它允许开发人员在同一台计算机上同时安装和使用多个不同的 Python 版本,而无需对系统进行全局更改。Pyenv 提供了一种简单的方法来切换 Python 版本,并且对于开发不同项目或在不同环境中使用不同的 Python 版本非常有用。

以下是 Pyenv 的一些主要特点和功能:

  • Python 版本管理:Pyenv 允许您方便地安装和管理多个 Python 版本。您可以选择安装官方的 Python 版本,也可以使用其他第三方实现的 Python 版本,如 PyPy。

  • 版本切换:通过 Pyenv,您可以轻松地在不同的 Python 版本之间进行切换。这对于测试和验证代码在不同 Python 版本下的运行行为非常有用。

  • 虚拟环境支持:Pyenv 可以与 Python 的虚拟环境管理工具(如 virtualenv 和 pyvenv)结合使用,为每个 Python 版本创建独立的虚拟环境。这使得在不同的项目中使用不同的 Python 版本和依赖项变得更加方便。

  • 插件系统:Pyenv 提供了一个插件系统,允许用户扩展其功能。例如,有一些插件可用于方便地安装特定的 Python 版本或提供其他附加功能。

  • 简单易用:Pyenv 的命令行界面非常简单和直观,使得安装、管理和切换 Python 版本变得容易上手

2. 安装

2.1 brew 安装 pyenv

# 更新 brew 保证下载到新版本的 pyenv
$ brew update# 安装依赖
$ brew install openssl readline sqlite3 xz zlib# 安装
$ brew install pyenv
# 卸载
$ brew uninstall pyenv

2.2 脚本安装

安装依赖

$ brew install openssl readline sqlite3 xz zlib

安装构建依赖项后,您就可以安装pyenv本身了。我建议使用 pyenv-installer 项目:

curl https://pyenv.run | bash

输出:

 curl https://pyenv.run | bash% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100   270  100   270    0     0     70      0  0:00:03  0:00:03 --:--:--    70
Cloning into '/Users/zongxun/.pyenv'...
remote: Enumerating objects: 1185, done.
remote: Counting objects: 100% (1185/1185), done.
remote: Compressing objects: 100% (675/675), done.
remote: Total 1185 (delta 692), reused 657 (delta 377), pack-reused 0
Receiving objects: 100% (1185/1185), 589.16 KiB | 479.00 KiB/s, done.
Resolving deltas: 100% (692/692), done.
Cloning into '/Users/zongxun/.pyenv/plugins/pyenv-doctor'...
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 11 (delta 1), reused 5 (delta 0), pack-reused 0
Receiving objects: 100% (11/11), 38.72 KiB | 535.00 KiB/s, done.
Resolving deltas: 100% (1/1), done.
Cloning into '/Users/zongxun/.pyenv/plugins/pyenv-update'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 10 (delta 1), reused 5 (delta 0), pack-reused 0
Receiving objects: 100% (10/10), done.
Resolving deltas: 100% (1/1), done.
Cloning into '/Users/zongxun/.pyenv/plugins/pyenv-virtualenv'...
remote: Enumerating objects: 63, done.
remote: Counting objects: 100% (63/63), done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 63 (delta 11), reused 27 (delta 0), pack-reused 0
Receiving objects: 100% (63/63), 40.25 KiB | 502.00 KiB/s, done.
Resolving deltas: 100% (11/11), done.WARNING: seems you still have not added 'pyenv' to the load path.# Load pyenv automatically by appending
# the following to
# ~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
# and ~/.bashrc (for interactive shells) :export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"# Restart your shell for the changes to take effect.# Load pyenv-virtualenv automatically by adding
# the following to ~/.bashrc:eval "$(pyenv virtualenv-init -)"

这将安装pyenv以及一些有用的插件:

  • pyenv:实际的pyenv应用程序
  • pyenv-virtualenv:pyenv 和虚拟环境的插件
  • pyenv-update: 更新插件pyenv
  • pyenv-doctor:用于验证是否安装了pyenv和构建依赖项的插件
  • pyenv-which-ext:自动查找系统命令的插件

注意:上述命令与下载pyenv-installer脚本并运行它的效果相同本地。因此,如果您想确切地了解正在运行的内容,可以自行查看该文件。或者,如果您确实不想运行脚本,可以查看手动安装说明。

~/.zshrc 添加以上内容:

$ vim ~/.zshrc 
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

然后

exec "$SHELL" # Or just restart your terminal

3. pyenv 安装 Python

查看可安装列表

pyenv install --list 

可用的CPython 3.6 到 3.8

pyenv install --list | grep " 3\.[678]"

查看所有 Jython 版本

$ pyenv install --list | grep "jython"jython-devjython-2.5.0jython-2.5-devjython-2.5.1jython-2.5.2jython-2.5.3jython-2.5.4-rc1jython-2.7.0jython-2.7.1jython-2.7.2

安装 3.12.1

pyenv install 3.12.1

安装 3.12.1并显示安装过程

pyenv install -v 3.12.1

最后正常输出如下显示安装成功:

......
Successfully installed pip-23.2.1
/var/folders/0_/3h6j4mkd2156rcrkqzj3b9600000gn/T/python-build.20231218163320.47316 ~
~
Installed Python-3.12.1 to /Users/zongxun/.pyenv/versions/3.12.1

在终端安装也许会卡住,例如:

$ pyenv install -v 3.12.1
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
/var/folders/0_/3h6j4mkd2156rcrkqzj3b9600000gn/T/python-build.20231218161915.46244 ~
Downloading Python-3.12.1.tar.xz...
-> https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz

可以先浏览器下载下来,再将包放到安装的默认位置(~/.pyenv/versions/),再执行安装pyenv install -v 3.12.1

已安装的位置

$ ls ~/.pyenv/versions/
3.12.1

4. 卸载 python

您的所有版本都将位于此处。这很方便,因为删除这些版本很简单:

$ rm -rf ~/.pyenv/versions/3.12.1

当然pyenv还提供了卸载特定Python版本的命令:

$ pyenv uninstall 3.12.1

5. 管理 python

检查您有哪些可用的 Python 版本:

$ pyenv versions
* system (set by /Users/zongxun/.pyenv/version)3.10.133.12.1
  • 表示 system Python 版本当前处于活动状态。您还会注意到,这是由根 pyenv 目录中的文件设置的。这意味着,默认情况下,您仍在使用系统 Python:
$ python3 -V
Python 3.9.6
$  which python3
/Users/zongxun/.pyenv/shims/python3

如果您想使用版本 3.10.13,则可以使用global 命令:

$ pyenv global 3.10.13
$ python -V
Python 3.10.13

python 版本从 3.9.6 切换为 3.10.13了。

测试命令

python -m test

这将启动大量内部 Python 测试来验证您的安装。您可以轻松地观看测试通过。

如果您想返回到默认的 Python 系统版本,您可以运行以下命令:

$ pyenv global system
$ python -V
Python 3.9.6

参考:

  • Python 官网
  • 官方 pyenv Github 下载
  • https://realpython.com/intro-to-pyenv/

这篇关于Mac managing Multiple Python Versions With pyenv 【 mac pyenv 管理多个python 版本 】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/512173

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很