翻译: Pyenv管理Python版本从入门到精通一

在这里插入图片描述

你是否经常在管理系统上多个Python版本时遇到困难?这可能是一个艰巨的任务,尤其是在处理需要不同Python版本的不同项目时。

但别担心,有一个解决方案:pyenv。就像一个熟练的杂技演员,pyenv可以轻松处理多个Python版本,让你无缝切换。

这份全面的指南旨在引导你了解如何安装、使用以及掌握pyenv,有效地管理你的Python环境。无论你是刚开始入门的初学者,还是寻找更高效管理Python版本的经验丰富的开发者,这份指南都能满足你的需求。

那么,让我们深入pyenv的世界,让Python版本管理变得轻而易举吧!

1. 什么是Pyenv,我该如何使用它?

Pyenv是一个强大的工具,它让你能够轻松地在多个Python版本之间切换。当你在处理需要不同Python版本的不同项目时,它就像救星一样。你可以在macOS上通过Homebrew或在Linux上通过GitHub来安装它,然后使用pyenv install命令来安装特定版本的Python。以下是一个简单的例子:

pyenv install 3.11.0# Output:
# Downloading Python-3.11.0.tar.xz...
# -> https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
# Installing Python-3.11.0...
# Installed Python-3.11.0 to /home/username/.pyenv/versions/3.11.0pyenv global 3.11.0# Output:
# Python 3.11.0

在这个例子中,我们首先使用pyenv install命令安装了Python 3.11.0。然后,我们通过pyenv global命令切换到这个版本。输出结果确认Python 3.11.0现在是激活版本。

2. 开始使用 Pyenv

要开始使用 pyenv,您首先需要在系统上安装它。安装过程根据您的操作系统略有不同。以下是您在 macOS 和 Linux 上进行安装的方法:

2.1 在macOS上安装Pyenv

在macOS上,使用Homebrew安装pyenv是最简单的方法。如果你还没有安装Homebrew,可以通过在终端运行以下命令来进行安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# Output:
# ==> This script will install:
# /usr/local/bin/brew
# /usr/local/share/doc/homebrew
# /usr/local/share/man/man1/brew.1
# /usr/local/share/zsh/site-functions/_brew
# /usr/local/etc/bash_completion.d/brew
# /home/linuxbrew/.linuxbrew/bin/brew

一旦你安装了Homebrew,你可以通过运行以下命令来安装pyenv

brew install pyenv
==> Downloading https://ghcr.io/v2/homebrew/core/pyenv/manifests/2.3.35
Already downloaded: /Users/zgpeace/Library/Caches/Homebrew/downloads/190509c288421dac1312fb8947361826aaf28754d1a990fb013c7ae5f78af4ed--pyenv-2.3.35.bottle_manifest.json
==> Fetching pyenv
==> Downloading https://ghcr.io/v2/homebrew/core/pyenv/blobs/sha256:53b6fa514e3d
Already downloaded: /Users/zgpeace/Library/Caches/Homebrew/downloads/f51d9b79b44b35b74911f79d1e95730d99f0edae6a5b6a5dc30387a01d6f4541--pyenv--2.3.35.monterey.bottle.tar.gz
==> Pouring pyenv--2.3.35.monterey.bottle.tar.gz
🍺  /usr/local/Cellar/pyenv/2.3.35: 1,132 files, 3.4MB
==> Running `brew cleanup pyenv`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

2.2 在 Linux 上安装 Pyenv

在 Linux 上,您可以使用 GitHub 上的 pyenv-installer 脚本来安装 pyenv。在终端中运行以下命令:

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash# Output:
# Cloning https://github.com/pyenv/pyenv.git to /home/username/.pyenv
# Cloning https://github.com/pyenv/pyenv-doctor.git to /home/username/.pyenv/plugins/pyenv-doctor
# Cloning https://github.com/pyenv/pyenv-installer.git to /home/username/.pyenv/plugins/pyenv-installer

2.3 安装和切换Python版本

一旦你安装了pyenv,你就可以用它来安装和切换Python版本。以下是你可以如何做到这一点:

要安装特定版本的Python,请使用pyenv install命令,后跟版本号。例如,要安装Python 3.11.0,你需要运行:

pyenv install 3.11python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.11.7.tar.xz...
-> https://www.python.org/ftp/python/3.11.7/Python-3.11.7.tar.xz
Installing Python-3.11.7...

您可能遇到的第一个障碍是安装 pyenv 期间出现的问题。例如,安装 pyenv 后,您可能会收到“找不到命令”错误。这通常是由于 PATH 设置不正确。要解决此问题,您需要将以下行添加到 shell 的配置文件(.bashrc.zshrc 等)中:

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

然后,重新启动终端或运行 source ~/.zshrc(或 shell 的相应文件.bashrc)。

要切换到此版本,请使用pyenv global命令:

pyenv global 3.11.7# Output:
# Python 3.11.7

就是这样!您现在已经安装了 pyenv,安装了特定版本的 Python,并切换到该版本。使用这些基本命令,您可以轻松管理多个 Python 版本。

3. 高级 Pyenv 用法

随着你对 pyenv 越来越熟悉,你会发现它提供的不仅仅是安装和在 Python 版本之间切换。它还可用于更复杂的任务,例如为特定项目设置本地 Python 版本、管理虚拟环境和处理依赖项。让我们更深入地研究 pyenv 的这些高级用法。

3.1 设置本地 Python 版本

使用 pyenv,您可以为特定项目设置本地 Python 版本。这在处理多个项目时非常有用,每个项目都需要不同的 Python 版本。这是你如何做到的:

导航到项目的目录并运行pyenv local命令,然后运行版本号。例如,若要将 Python 3.9.18
设置为项目的本地版本,请运行:

cd /path/to/your/project
pyenv local 3.9.18# Output:
# Python 3.9.18

这将在项目的目录中创建一个 .python-version 文件,pyenv 将使用该文件来确定您在此目录中时要使用的 Python 版本。
在这里插入图片描述

4. 解决常见的 Pyenv 问题

即使使用最好的工具,您也可能会遇到问题或障碍。Pyenv 也不例外。本节将讨论您在使用 pyenv 时可能遇到的常见问题,以及它们的解决方案和解决方法。请记住,每个问题都有解决方案!

4.1 切换 Python 版本时出现的问题

另一个常见问题是无法切换 Python 版本。如果您尝试切换版本,但 pyenv 似乎忽略了您的命令,这可能是由于多种原因。一个常见的原因是忘记将 eval "$(pyenv init -)" 行添加到 shell 的配置文件.zshrc中。确保此行存在,并且是为 pyenv 添加的最后一行。

4.2 与其他工具的兼容性问题

Pyenv 有时会与其他 Python 工具(如 pipenv 或 virtualenv)发生冲突。如果您在将这些工具与 pyenv 一起使用时遇到问题,请确保为您的项目使用正确的 Python 版本。您可以使用 pyenv version进行检查。

如果您仍然遇到问题,可能值得考虑使用 pyenv-virtualenv,这是 pyenv 的扩展,可让您更有效地管理虚拟环境。

请记住,故障排除的关键是耐心和理解。您遇到的每个问题都是一个机会,可以更多地了解 pyenv 和 Python 的工作原理。祝您疑难解答愉快!

参考

https://ioflood.com/blog/pyenv/

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

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

相关文章

Vue插槽(slot)的使用

Vue插槽(slot)是一种强大的功能&#xff0c;它允许您在组件模板中插入自定义内容。插槽可以让你更灵活地构建组件&#xff0c;以满足不同的使用场景。 使用说明&#xff1a; 定义插槽&#xff1a;在组件模板中&#xff0c;使用<slot>标签来定义插槽。使用插槽&#xff…

连接超时的问题

连接超时的问题 通用第三方工具连接超时 connect timeout 方案一&#xff1a; /etc/ssh/sshd_config node1上操作&#xff0c;图是错的 方案二&#xff1a; windows上Hosts文件域名解析有问题 比如&#xff1a; 192.168.xx.100 node1 192.168.xx.161 node1 两个都解析成node…

绝地求生:【PC】未授权程序使用行为的相关公告

各位玩家大家好&#xff0c; 最近闲游盒通过PUBG玩家社区收到了关于未授权程序的举报&#xff0c;举报称有人在游戏内使用了能测量玩家间的距离并辅助迫击炮射击的未授权辅助程序。为此&#xff0c;我们想就该事项向大家进行如下公告&#xff1a; 使用此类未授权程序的行为违反…

23/76-LeNet

LeNet 早期成功的神经网络。 先使用卷积层来学习图片空间信息。 然后使用全连接层转换到类别空间。 #In[]LeNet,上世纪80年代的产物,最初为了手写识别设计from d2l import torch as d2l import torch from torch import nn from torch.nn.modules.loss import CrossEntropyLos…

无法加载操作系统,原因是关键系统驱动程序丢失或包含错误

bcdboot c:\windows /l zh-cn 用这个命令解决了,没有进入时候蓝屏了,不知道为什么 问题 无法加载操作系统,原因是关键系统驱动程序丢失或包含错误上午因为有点事就没有像往常一样打开电脑,下午回到家休息了一会本来准备打开电脑开始我愉快地下午生活,没想到一个自动恢复给…

工业平板定制方案_基于联发科、紫光展锐平台的工业平板电脑方案

工业平板主板采用联发科MT6762平台方案&#xff0c;搭载Android 11.0操作系统&#xff0c; 主频最高2.0GHz&#xff0c;效能有大幅提升;采用12nm先进工艺&#xff0c;具有低功耗高性能的特点。 该工业平板主板搭载了IMG GE8320图形处理器&#xff0c;最高主频为680MHz, 支持108…

Java设计模式之访问者模式详解

Java设计模式之访问者模式详解 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一同踏上Java设计模式之旅&#xff0c;探索访问者模式&#x…

Flume 之自定义Sink

1、简介 前文我们介绍了 Flume 如何自定义 Source&#xff0c; 并进行案例演示&#xff0c;本文将接着前文&#xff0c;自定义Sink&#xff0c;在这篇文章中&#xff0c;将使用自定义 Source 和 自定义的 Sink 实现数据传输&#xff0c;让大家快速掌握Flume这门技术。 2、自定…

JVM与HotSpot

JVM和HotSpot 1、概念 JVM是虚拟机的规范&#xff0c;HotSpot是jvm的具体实现 HotSpot包括一个解释器和两个编译器&#xff08;client 和 server&#xff0c;二选一的&#xff09;&#xff0c;解释与编译混合执行模式&#xff0c;默认启动解释执行。 编译器&#xff1a;java源…

121_买卖股票的最佳时机

描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择某一天买入这只股票&#xff0c;并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。…

Python - 深夜数据结构与算法之 Sort

目录 一.引言 二.排序简介 1.排序类型 2.时间复杂度 3.初级排序 4.高级排序 A.快速排序 B.归并排序 C.堆排序 5.特殊排序 三.经典算法实战 1.Quick-Sort 2.Merge-Sort 3.Heap-Sort 4.Relative-Sort-Array [1122] 5.Valid-anagram [242] 6.Merge-Intervals […

Java NIO (二)NIO Buffer类的重要方法(备份)

1 allocate()方法 在使用Buffer实例前&#xff0c;我们需要先获取Buffer子类的实例对象&#xff0c;并且分配内存空间。需要获取一个Buffer实例对象时&#xff0c;并不是使用子类的构造器来创建&#xff0c;而是调用子类的allocate()方法。 public class AllocateTest {static…

如何快速看懂一篇英文AI论文?

已经2024年了&#xff0c;该出现一个写论文解读AI Agent了。 大家肯定也在经常刷论文吧。 但真正尝试过用GPT去刷论文、写论文解读的小伙伴&#xff0c;一定深有体验——费劲。其他agents也没有能搞定的&#xff0c;今天我发现了一个超级厉害的写论文解读的agent &#xff0c…

某银行主机安全运营体系建设实践

随着商业银行业务的发展&#xff0c;主机规模持续增长&#xff0c;给安全团队运营工作带来极大挑战&#xff0c;传统的运营手段已经无法适应业务规模的快速发展&#xff0c;主要体现在主机资产数量多、类型复杂&#xff0c;安全团队难以对全量资产进行及时有效的梳理、管理&…

JS中数组的相关方法介绍

push() 将一个或多个元素添加到数组的末尾&#xff0c;并返回新的长度。 let arr [1, 2, 3]; arr.push(4); // arr 现在是 [1, 2, 3, 4] pop() 删除并返回数组的最后一个元素 let arr [1, 2, 3, 4]; let last arr.pop(); // last 现在是 4&#xff0c;arr 现在是 [1, …

第23章 集 ,势(阿列夫0),良序集(序数),有理数无理数

继续讲解集&#xff0c;接下来讲集的运算&#xff0c;集合的交和并&#xff0c;上开口是交集下开口是并集&#xff0c;这里有一些类似于加法和乘法的样子&#xff0c;其实也没有错&#xff0c;乘法符号也只是一个符号&#xff0c;真正有用的是表示的交换和结合率 集这个概念&a…

HCIA—— 16每日一讲:HTTP和HTTPS、无状态和cookie、持久连接和管线化、(初稿丢了,这是新稿,请宽恕我)

学习目标&#xff1a; HTTP和HTTPS、无状态和cookie、持久连接和管线化、HTTP的报文、URI和URL&#xff08;初稿丢了&#xff0c;这是新稿&#xff0c;请宽恕我&#x1f636;‍&#x1f32b;️&#xff09; 学习内容&#xff1a; HTTP无状态和cookieHTTPS持久连接和管线化 目…

深入解析iOS中的layoutSubviews方法

深入解析iOS中的layoutSubviews方法 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在今天的文章中&#xff0c;我们将深入研究iOS开发中一个不可或缺的方法——lay…

vue2 pdfjs-2.8.335-dist pdf文件在线预览功能

1、首先先将 pdfjs-2.8.335-dist 文件夹从网上搜索下载&#xff0c;复制到public文件夹下. 2、在components下新建组件PdfViewer.vue文件 3、在el-upload 中调用 pdf-viewer 组件 4、在el-upload 中的 on-preview方法中加上对应的src路径 internalPreview(file) { //判断需要…

编译原理1.3习题 程序设计语言的发展历程

图源&#xff1a;文心一言 编译原理习题整理~&#x1f95d;&#x1f95d; 作为初学者的我&#xff0c;这些习题主要用于自我巩固。由于是自学&#xff0c;答案难免有误&#xff0c;非常欢迎各位小伙伴指正与讨论&#xff01;&#x1f44f;&#x1f4a1; 第1版&#xff1a;自…