”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > pyenv入门:Python开发必备工具

pyenv入门:Python开发必备工具

发布于2024-09-27
浏览:955

Getting Started with pyenv: A Must-Have Tool for Python Development

什么是 pyenv,为什么需要它?

pyenv 是一个简单但功能强大的工具,可让您管理系统上的多个 Python 版本。作为一名 Python 开发人员,您经常需要处理需要不同 Python 版本的不同项目。手动管理这些版本可能很麻烦并且容易出错。这就是 pyenv 的用武之地,它可以轻松地在 Python 版本之间切换,确保您的项目始终在正确的版本上运行。

为什么使用 pyenv?

  • 版本管理:轻松安装和切换不同的Python版本。

  • 项目隔离:确保每个项目使用正确的Python版本,避免兼容性问题。

  • 灵活性:在多个 Python 版本上轻松测试您的代码。

如果您曾经遇到过版本冲突的问题,或者必须在同一台计算机上同时使用 Python 2.x 和 3.x,您将会欣赏 pyenv 如何简化您的开发工作流程。

将 pyenv 与 Poetry 集成

pyenv 与 Poetry 配合得非常好,Poetry 是一个管理依赖项和 Python 环境的工具。如果您已经熟悉 Poetry(如果您不熟悉,请查看我关于 Poetry 入门的文章),您会发现将其与 pyenv 结合使用可以让您更好地控制您的项目。

当您使用 Poetry 创建新项目时,它会自动使用 pyenv 为目录设置的 Python 版本。这可确保在符合您的项目要求的环境中管理您的项目依赖项。

安装 pyenv

让我们从安装 pyenv 开始。安装过程因您的操作系统而异。

在 macOS 上

使用自制程序:

brew update
brew install pyenv

为了避免它们意外链接到 Pyenv 提供的 Python,请将以下行添加到交互式 shell 的配置中:

  • Bash/Zsh:
alias brew='env PATH="${PATH//$(pyenv root)\/shims:/}" brew'
  • 鱼:
alias brew="env PATH=(string replace (pyenv root)/shims '' \"\$PATH\") brew"

在 Linux 上

  • 使用卷曲:
curl https://pyenv.run | bash

安装后,将以下内容添加到 shell 配置文件(例如 .bashrc、.zshrc)中:

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
  • 使用包管理器 在 Arch Linux 上可以借助 pacman 进行安装
sudo pacman -S pyenv

通过在终端中运行以下命令将命令添加到 ~/.bashrc:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

对于 Zsh:

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

对于鱼:
如果您有 Fish 3.2.0 或更高版本,请以交互方式执行此操作:

set -Ux PYENV_ROOT $HOME/.pyenv
fish_add_path $PYENV_ROOT/bin

否则,执行下面的代码片段:

set -Ux PYENV_ROOT $HOME/.pyenv
set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths

现在,将其添加到 ~/.config/fish/config.fish:

pyenv init - | source

有关更多详细信息,请查看他们的 GitHub。

使用 Pyenv

1) 检查Python版本

查看当前使用的Python版本:

❯ pyenv versions
* system (set by /home/shanu/.pyenv/version)

2) 安装Python版本

使用pyenv,您可以轻松安装任何版本的Python:

❯ pyenv install 3.11.9

安装python版本后,可以对项目进行全局或本地设置

3) 设置全局Python版本

不推荐,可能会导致您的系统出现问题
您可以设置一个全局Python版本,该版本将在您的系统中默认使用:

pyenv global 3.10.6 

4) 设置本地Python版本

您还可以为特定项目目录设置本地Python版本。当您位于该目录中时,此版本将覆盖全局版本:

❯ pyenv local 3.8.10

❯ pyenv versions
  system
* 3.11.9 (set by /home/shanu/test_folder/.python-version)

❯ python -V
Python 3.11.9 (my global version is 3.12.5)

要取消设置,只需运行:

❯ pyenv local --unset

❯ pyenv versions
* system (set by /home/shanu/.pyenv/version)
  3.11.9

❯ python -V
Python 3.12.5

5) 卸载Python版本

卸载不再需要的Python版本:

pyenv uninstall 3.11.9

结论

Pyenv 对于 Python 开发人员来说是一个非常宝贵的工具,特别是与 Poetry 结合使用时。通过轻松管理Python版本,它可以让您专注于编写代码而不用担心版本冲突。在你的下一个 Python 项目中尝试一下吧!

版本声明 本文转载于:https://dev.to/shanu-kumawat/getting-started-with-pyenv-a-must-have-tool-for-python-development-1d3j?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在单个命令行中运行多行命令?
    如何在单个命令行中运行多行命令?
    如何在一行命令行中执行多行语句使用Python的-c选项执行单行循环时,在循环之前导入模块会导致语法错误。这是因为Python解释器将代码块视为单个语句。要解决此问题,可以采用以下几种方法:使用管道要克服语法错误,请使用 echo 命令将代码块作为一系列输入行重定向到 Python:echo -e ...
    编程 发布于2024-11-07
  • 如何在 PHP 中从 MySQL 迁移到 MySQLi?
    如何在 PHP 中从 MySQL 迁移到 MySQLi?
    从 MySQL 迁移到 MySQLi将网站从 MySQL 迁移到 MySQLi 需要修改 PHP 代码,但数据库本身基本上不受影响。 MySQLi 是 MySQL 扩展的改进版本,提供增强的功能和安全性。PHP 代码更改是的,您可以简单地将 MySQLi 函数替换为 MySQL 函数。这里有一个快速...
    编程 发布于2024-11-07
  • 如何在CSS中实现背景和子元素的不同透明度?
    如何在CSS中实现背景和子元素的不同透明度?
    理解 CSS 背景不透明度在 CSS 中,不透明度控制元素的透明度。当应用于容器时,它自然会影响背景及其子元素。继承问题要实现背景和子元素不同的不透明度, CSS 继承带来了挑战。子元素从其父容器继承不透明度,从而导致所提供示例中的背景和文本具有相同的不透明度。实现所需不透明度的解决方案实现要达到所...
    编程 发布于2024-11-07
  • 【个人网站】Next如何集成Notion数据库
    【个人网站】Next如何集成Notion数据库
    To integrate a Notion database into a Next.js project, you can use Notion as a content management system (CMS) and display its content on your website...
    编程 发布于2024-11-07
  • 为什么 PhpMyAdmin 在 Ubuntu 12.04 上给出“MySQLi 扩展缺失”错误?
    为什么 PhpMyAdmin 在 Ubuntu 12.04 上给出“MySQLi 扩展缺失”错误?
    PhpMyAdmin 错误:MySQLi 扩展缺失在 Ubuntu 12.04 上遇到 PhpMyAdmin 问题?尽管安装了 Apache2、PHP5、MySQL 和 PhpMyAdmin,您还是遇到了“mysqli 扩展丢失”错误。尽管您已取消注释 php.ini 中的“extension=my...
    编程 发布于2024-11-07
  • 如何使用 java.net.URLConnection 将文件和附加参数上传到 HTTP 服务器?
    如何使用 java.net.URLConnection 将文件和附加参数上传到 HTTP 服务器?
    在 Java 中使用附加参数将文件上传到 HTTP 服务器将文件上传到 HTTP 服务器是许多应用程序的常见需求。但是,有时还需要随文件一起传递附加参数。这是一个允许您在不使用外部库的情况下发送文件和参数的解决方案:java.net.URLConnection 和 Multipart/Form-Da...
    编程 发布于2024-11-07
  • 如何在 PHP 中逐行读取和处理文本文件?
    如何在 PHP 中逐行读取和处理文本文件?
    在 PHP 中读取文本文件:分步指南许多 Web 开发场景都涉及从文本文件读取数据。在 PHP 中,文件处理函数提供了逐行读取纯文本文件的便捷方法。让我们分解一下使用 PHP 读取文本文件的过程。读取文本文件的代码:以下 PHP 代码片段演示了如何读取文本文件并逐行处理其内容:<?php //...
    编程 发布于2024-11-07
  • 我离不开的生产力工具(奖励)
    我离不开的生产力工具(奖励)
    大家好,你们的孩子 Nomadev 带着另一篇帖子回来了!今天,我很高兴与大家分享一些我每天使用的超级酷的人工智能工具。这些工具已成为我日常工作的重要组成部分,帮助我保持井井有条、高效并完成更多工作。 在当今快节奏的世界中,我们都希望提高生产力和效率。借助人工智能,有大量工具可以帮助我们管理任务、简...
    编程 发布于2024-11-07
  • 在 Go/Templ 中制作一个干净、友好的 Spinner
    在 Go/Templ 中制作一个干净、友好的 Spinner
    无用的 HTML 你们可能认为在 HTML 中制作一个一致、干净且专业的旋转框是一项简单的任务...但是,令我们失望的是,没有标准的属性来告诉输入它应该只接受整数或小数值,所有的输入过滤都必须是JS。哎呀! 我将使用 Go、a-h/Templ、Tailwind 和我心爱的 Alpi...
    编程 发布于2024-11-07
  • 您可以在没有数据库连接的情况下转义字符串以确保数据库安全吗?
    您可以在没有数据库连接的情况下转义字符串以确保数据库安全吗?
    在没有数据库连接的情况下转义字符串以确保数据库安全测试与数据库交互的代码时,通过正确转义用户输入来防止 SQL 注入攻击非常重要。然而,为每个测试连接到数据库可能效率很低。有没有办法在没有活动数据库连接的情况下转义字符串?没有连接转义的限制不幸的是,在没有数据库连接的情况下不可能可靠地转义字符串。 ...
    编程 发布于2024-11-07
  • Entropix:最大化推理性能的采样技术
    Entropix:最大化推理性能的采样技术
    Entropix:最大化推理性能的采样技术 根据 Entropix README,Entropix 使用基于熵的采样方法。本文讲解了基于熵和变熵的具体采样技术。 熵和变熵 让我们首先解释熵和变熵,因为它们是确定采样策略的关键因素。 熵 在信息论中,熵...
    编程 发布于2024-11-07
  • 重叠方法支持多态性
    重叠方法支持多态性
    方法覆盖: 这不仅仅是一个命名问题,而是 Java 的一个基本特性。 它基于动态方法调度的概念。 动态方法调度: 是在运行时而非编译时解决对重叠方法的调用的机制。 允许在 Java 中实现多态性。 工作原理: 超类引用变量可以引用子类对象。 当通过超类引用调用重写的方法时,要执行的方法的版本根据调用...
    编程 发布于2024-11-07
  • 如何对 Move_uploaded_file() 函数进行故障排除?
    如何对 Move_uploaded_file() 函数进行故障排除?
    Move_uploaded_file() 函数故障排除move_uploaded_file() 函数在文件上传机制中起着至关重要的作用。然而,当遇到非功能性问题时,细致的故障排除是必不可少的。要解决这个问题,第一步是激活 PHP 错误报告。这将显示来自 move_uploaded_file() 函数...
    编程 发布于2024-11-07
  • 如何解决使用 UNION 时出现的“Select 语句中的不同列计数”错误?
    如何解决使用 UNION 时出现的“Select 语句中的不同列计数”错误?
    错误:Select 语句中的不同列计数执行使用 UNION 运算符的查询时,必须确保涉及的所有单独 SELECT 语句都遵守两个基本标准:匹配列数:每个 SELECT 语句必须在检索的结果集中产生相同数量的列。数据一致类型: 不同 SELECT 语句中相应列的数据类型应对齐。问题分析考虑提供的查询:...
    编程 发布于2024-11-07
  • 为什么Python项目中的相对路径会导致文件未找到错误?
    为什么Python项目中的相对路径会导致文件未找到错误?
    在 Python 项目中使用相对路径访问文件在 Python 项目中操作文件时,为了方便起见,通常使用相对路径。然而,它们的行为可能变得不明确,特别是在处理多级项目结构时。考虑以下项目布局:project /data test.csv /package ...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3