翻译: 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,一经查实,立即删除!

相关文章

连接超时的问题

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

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

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

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…

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

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

Flume 之自定义Sink

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

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实例前,我们需要先获取Buffer子类的实例对象,并且分配内存空间。需要获取一个Buffer实例对象时,并不是使用子类的构造器来创建,而是调用子类的allocate()方法。 public class AllocateTest {static…

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

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

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

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

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

学习目标: HTTP和HTTPS、无状态和cookie、持久连接和管线化、HTTP的报文、URI和URL(初稿丢了,这是新稿,请宽恕我😶‍🌫️) 学习内容: HTTP无状态和cookieHTTPS持久连接和管线化 目…

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

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

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

图源:文心一言 编译原理习题整理~🥝🥝 作为初学者的我,这些习题主要用于自我巩固。由于是自学,答案难免有误,非常欢迎各位小伙伴指正与讨论!👏💡 第1版:自…

IPv6隧道--GRE隧道

GRE隧道 通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。 GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一…

个人网站制作 Part 7 添加用户认证和数据库集成 | Web开发项目

文章目录 👩‍💻 基础Web开发练手项目系列:个人网站制作🚀 用户认证与数据库集成🔨添加用户认证🔧步骤 1: 使用Passport.js 🔨集成数据库🔧步骤 2: 使用MongoDB和Mongoose &#x1f…

Grafana(二)Grafana 两种数据源图表展示(json-api与数据库)

一. 背景介绍 在先前的博客文章中,我们搭建了Grafana ,它是一个开源的度量分析和可视化工具,可以通过将采集的数据分析、查询,然后进行可视化的展示,接下来我们重点介绍如何使用它来进行数据渲染图表展示 Docker安装G…

AIOps探索 | 基于大模型构建高效的运维知识及智能问答平台(2)

前面分享了平台对运维效率提升的重要性和挑战以及基于大模型的平台建设解决方案,新来的朋友点这里,一键回看精彩原文。 基于大模型构建高效的运维知识及智能问答平台(1)https://mp.csdn.net/mp_blog/creation/editor/135223109 …

【REMB 】翻译:草案remb-03

REMB REMB消息 以及 绝对时间戳选项 在带宽估计中的使用 :an absolute-value timestamp option for use in bandwidth estimatoin. 接收方带宽估计的RTCP消息 REMB 这位大神翻译的更好。 RTCP message for Receiver Estimated Maximum Bitrate draft-alvestrand-rmcat-remb-03…

iOS开发进阶(六):Xcode14 使用信号量造成线程优先级反转问题修复

文章目录 一、前言二、关于线程优先级反转三、优先级反转会造成什么后果四、怎么避免线程优先级反转五、使用信号量可能会造成线程优先级反转,且无法避免六、延伸阅读:iOS | Xcode中快速打开终端6.1 .sh绑定6.2 执行 pod install 脚本 七、延伸阅读&…

Android Activity的启动流程(Android-10)

前言 在Android开发中,我们经常会用到startActivity(Intent)方法,但是你知道startActivity(Intent)后Activity的启动流程吗?今天就专门讲一下最基础的startActivity(Intent)看一下Activity的启动流程,同时由于Launcher的启动后续…

STM32——DMA知识点及实战总结

1.DMA概念介绍 DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输 将数据从一个地址空间复制到另一个地址空间。 注意:DMA传输无需CPU直接控制传输 2.DMA框图 3.DMA处理过程 外设的 8 个请求独立连接到每个通道,由 DMA_…