使用 pyenv 管理多个 Python 版本
  EMGtoNoEBSIz 2023年11月02日 55 0

为什么使用pyenv?

pyenv是管理多个 Python 版本的绝佳工具。即使您的系统上已经安装了 Python,pyenv安装它也是值得的,这样您就可以轻松地尝试新的语言功能或帮助为不同版本的 Python 上的项目做出贡献。使用也是安装 Python 预发布版本的pyenv好方法,这样您就可以测试它们是否存在错误。

为什么不使用系统 Python?

“系统 Python”是安装在您的操作系统上的 Python。如果您使用的是 Mac 或 Linux,那么默认情况下,当您python在终端中输入时,您会得到一个不错的Python REPL。

那么,为什么不使用它呢?一种看待它的方式是,这个 Python 确实属于操作系统。毕竟,它是随操作系统一起安装的。这甚至会在您运行时反映出来which:

$ which python
/usr/bin/python

在这里,python所有用户都可以使用它的位置/usr/bin/python。很有可能,这也不是您想要的 Python 版本:

$ python -V
Pyhton 2.7.12

要将包安装到您的系统 Python 中,您必须运行sudo pip install. 那是因为您正在全局安装 Python 包,如果另一个用户出现并想要安装该包的稍旧版本,这将是一个真正的问题。

同一个包的多个版本的问题往往会悄悄出现在你身上,并在你最意想不到的时候咬你一口。出现此问题的一种常见方式是一个流行且稳定的软件包突然在您的系统上运行异常。经过数小时的故障排除和谷歌搜索后,您可能会发现您安装了错误的依赖项版本,这会毁了您的一天。

即使您的 Python 版本安装在 中/usr/local/bin/python3,您仍然不安全。您将遇到上述相同的权限和灵活性问题。

此外,您实际上无法控制操作系统上安装的 Python 版本。如果您想使用 Python 中的最新功能,并且您使用的是 Ubuntu,那么您可能就不走运了。默认版本可能太旧,这意味着您只能等待新操作系统的出现。

最后,有些操作系统实际上是使用封装好的Python来运行的。举yum个例子,它大量使用 Python 来完成它的工作。如果您安装了新版本的 Python 并且不小心将它安装到您的用户空间,您可能会严重损害您使用操作系统的能力。

安装pyenv

在安装pyenv它自己之前,您将需要一些特定于操作系统的依赖项。这些依赖项主要是用 C 编写的开发实用程序,并且是必需的,因为pyenv通过从源代码构建来安装 Python。有关构建依赖项的更详细分解和解释,您可以查看官方文档。在本教程中,您将看到安装这些依赖项的最常用方法。

建立依赖关系

pyenv从源代码构建 Python,这意味着您需要构建依赖项才能实际使用pyenv. 构建依赖项因平台而异。如果您使用的是Ubuntu/Debian并且想要安装构建依赖项,您可以使用以下命令:

$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

这使用Apt安装所有构建依赖项。运行它,您就可以开始使用 Debian 系统了。如果您使用Fedora/CentOS/RHEL,您可以使用yum来安装您的构建依赖项:

$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite \
sqlite-devel openssl-devel xz xz-devel libffi-devel

此命令将安装 Python 的所有构建依赖项yum。

macOS用户可以使用以下命令:

brew install openssl readline sqlite3 xz zlib

如果您使用的是openSUSE,那么您将运行以下命令:

$ zypper in zlib-devel bzip2 libbz2-devel libffi-devel \
libopenssl-devel readline-devel sqlite3 sqlite3-devel xz xz-devel

最后,对于Alpine用户,你可以使用这个:

$ apk add libffi-dev ncurses-dev openssl-dev readline-dev \
tk-dev xz-dev zlib-dev

使用pyenv-installer

安装构建依赖项后,您就可以安装pyenv它自己了。我推荐使用pyenv-installer 项目:

curl https://pyenv.run | bash

pyenv这将与一些有用的插件一起安装:

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

在运行结束时,您应该会看到如下内容:

WARNING: seems you still have not added 'pyenv' to the load path.

Load pyenv automatically by adding
the following to ~/.bashrc:

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

输出将基于您的 shell。但是你应该按照说明添加pyenv到你的路径并初始化pyenv/pyenv-virtualenv自动完成。完成此操作后,您需要重新加载 shell:

exec "$SHELL" # Or just restart your terminal

使用pyenv安装 Python

现在您已经pyenv安装好了,下一步就是安装 Python。您有许多版本的 Python 可供选择。如果您想查看所有可用的CPython 3.6 到 3.8,您可以这样做:

$ pyenv install --list | grep " 3\.[678]"
  3.6.0
  3.6-dev
  3.6.1
  3.6.2
  3.6.3
  3.6.4
  3.6.5
  3.6.6
  3.6.7
  3.6.8
  3.7.0
  3.7-dev
  3.7.1
  3.7.2
  3.8-dev

pyenv同样,您可以看到必须提供的所有 Jython 版本。如果要查看所有版本,可以执行以下操作:

$ pyenv install --list
...
# There are a lot

找到所需的版本后,您可以使用一个命令安装它:

$ pyenv install -v 3.7.2
/tmp/python-build.20190208022403.30568 ~
Downloading Python-3.7.2.tar.xz...
-> https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
Installing Python-3.7.2...
/tmp/python-build.20190208022403.30568/Python-3.7.2 /tmp/python-build.20190208022403.30568 ~
[...]
Installing collected packages: setuptools, pip
Successfully installed pip-18.1 setuptools-40.6.2
Installed Python-3.7.2 to /home/realpython/.pyenv/versions/3.7.2

这将需要一段时间,因为pyenv是从源代码构建 Python,但一旦完成,您将在本地计算机上使用 Python 3.7.2。如果您不想看到所有输出,只需删除-v标志即可。甚至可以安装 CPython 的开发版本:

$ pyenv install 3.8-dev

安装位置

如前所述,pyenv通过从源代码构建 Python 来工作。您安装的每个版本都很好地位于您的pyenv根目录中:

$ ls ~/.pyenv/versions/
2.7.15  3.6.8  3.8-dev

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

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

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

$ pyenv uninstall 2.7.15
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   108   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   75   0   0 Python
  fwjWaDlWXE4h   2024年05月17日   38   0   0 Python
  YpHJ7ITmccOD   2024年05月17日   40   0   0 Python
EMGtoNoEBSIz
作者其他文章 更多