同一台机器上有多个 Python 版本?

2025-01-08 08:50:00
admin
原创
205
摘要:问题描述:Python 网站上是否有关于如何在 Linux 上的同一台机器上安装和运行多个版本的 Python 的官方文档?我可以找到无数的博客文章和答案,但我想知道是否有一种“标准”的官方方法可以做到这一点?或者这一切都依赖于操作系统?解决方案 1:我认为它是完全独立的。只需安装它们,然后你就可以使用命令,...

问题描述:

Python 网站上是否有关于如何在 Linux 上的同一台机器上安装和运行多个版本的 Python 的官方文档?

我可以找到无数的博客文章和答案,但我想知道是否有一种“标准”的官方方法可以做到这一点?

或者这一切都依赖于操作系统?


解决方案 1:

我认为它是完全独立的。只需安装它们,然后你就可以使用命令,例如/usr/bin/python2.5/usr/bin/python2.6。链接/usr/bin/python到你想用作默认的命令。

无论如何,所有库都位于单独的文件夹中(以版本命名)。

如果您想手动编译版本,请参阅 Python 源代码的自述文件:

安装多个版本

在 Unix 和 Mac 系统上,如果您打算使用相同的安装前缀(--prefixconfigure 脚本的参数)安装多个版本的 Python,则必须注意主 Python 可执行文件不会被其他版本的安装覆盖。使用 安装的所有文件和目录都make altinstall包含主版本和次版本,因此可以并存。 make install还创建了
${prefix}/bin/python3引用 的版本${prefix}/bin/pythonX.Y。如果您打算使用相同的前缀安装多个版本,则必须确定哪个版本(如果有)是您的“主”版本。使用 安装该版本
make install。使用 安装所有其他版本make altinstall

例如,如果您想安装 Python 2.5、2.6 和 3.0,其中 2.6 为主要版本,那么您需要make install在 2.6 构建目录和make altinstall其他目录中执行。

解决方案 2:

2019 年更新:使用asdf

这些天我建议使用asdf来并排安装各种版本的 Python 解释器。

注1:asdf不仅适用于Python,也适用于所有主流语言。

注2:asdf与流行的包管理器(如pipenv和poetry )结合使用效果很好。

如果您安装了 asdf,您可以轻松下载/安装新的 Python 解释器:

# Install Python plugin for asdf:
asdf plugin-add python

# List all available Python interpreters:
asdf list-all python

# Install the Python interpreters that you need:
asdf install python 3.7.4
asdf install python 3.6.9
# etc...

# If you want to define the global version:
asdf global python 3.7.4

# If you want to define the local (project) version:
# (this creates a file .tool-versions in the current directory.)
asdf local python 3.7.4

旧答案:从源代码安装 Python

如果需要在 Unix 系统上安装多个版本的 Python(在主版本旁边):

  1. 安装源编译所需的软件包

$ sudo apt-get 安装 build-essential checkinstall $ sudo apt-get 安装 libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

  1. 下载并解压所需的 Python 版本

下载适用于 Linux 的 Python 源代码作为 tarball 并将其移动到/usr/src

将下载的软件包解压到位。(将“x”替换为您下载的版本)

$ sudo tar xzf Python-x.x.x.tgz
  1. 编译并安装 Python 源代码

$ cd Python-xxx $ sudo ./configure $ sudo make altinstall

您的新 Python bin 现在位于/usr/local/bin。您可以测试新版本:

$ pythonX.X -V
Python x.x.x
$ which pythonX.X
/usr/local/bin/pythonX.X

# Pip is now available for this version as well:
$ pipX.X -V
pip X.X.X from /usr/local/lib/pythonX.X/site-packages (python X.X)

解决方案 3:

在 Windows 上,它们被安装到单独的文件夹“C:\python26”和“C:\python31”,但可执行文件具有相同的“python.exe”名称。

我创建了另一个“C:\python”文件夹,其中包含“python.bat”和“python3.bat”,分别作为“python26”和“python31”的包装器,并将“C:\python”添加到PATH环境变量中。

这使我能够在 .bat Python 包装器中键入pythonpython3来启动我想要的那个。

在 Linux 上,您可以使用#!技巧来指定脚本要使用的版本。

解决方案 4:

我正在使用 Mac,对我来说最有效的方法是使用 pyenv!

下面的命令适用于 Mac,但与 Linux 非常相似(请参阅下面的链接)

#Install pyenv
brew update
brew install pyenv

假设你的 Mac 上的主版本是 Python 3.7.6:

python --version 

输出:

Python 3.7.6

现在安装python 3.10

首先,我们可以检查它是否已经存在,运行:

pyenv install --list

向上滚动(就在 anaconda 上方)以检查它是否存在/是否已安装,如果没有,请运行:

pyenv install 3.10

确保在终端中运行此程序(将其添加到 ~/.bashrc 或 ~/.zshrc):

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

现在我们仅在打开的终端/shell上运行它:

pyenv shell 3.10

现在运行

python --version

输出:

Python 3.10.9

同样重要的是在打开的 shell/iTerm 中取消设置它:

pyenv shell --unset

您也可以在全球或本地运行它

解决方案 5:

包管理器 - 用户级

对于可以安装和管理多个版本的python的包管理器,这些是不错的选择:

  • pyenv-只能安装和管理python版本

  • asdf-能够安装和管理多种不同的语言

这些包管理器的优点在于,与从源代码安装 Python 相比,设置它们和使用它们安装多个版本的 Python 可能更容易。它们还提供了使用垫片轻松更改可用 Python 版本和设置每个目录的 Python 版本的命令。

缺点是,默认情况下,它们安装在用户级别(在您的主目录中),并且需要一点用户级别的配置 - 您需要编辑您的~/.profile~/.bashrc或类似的文件。这意味着使用它们为所有用户全局安装多个 python 版本并不容易。为了做到这一点,您可以从源代码与操作系统现有的 python 版本一起安装。


从源安装-系统范围

您需要具有 root 权限才能使用此方法。

请参阅官方 Python 文档以了解如何从源代码构建,了解更多注意事项和选项。

/usr/local是系统管理员安装共享(系统范​​围)软件的指定位置,因此其子目录是下载并安装 Python 源代码的好地方。请参阅Linux 基金会文件层次结构标准 4.9 节。

安装所有构建依赖项。在基于 Debian 的系统上,使用:

apt update
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev

选择要安装的 Python 版本。请参阅Python 源代码发布页面以获取列表。

下载并解压文件,用 python 版本(即)/usr/local/src替换以下内容。X.X.X`3.8.2`

cd /usr/local/src
wget https://www.python.org/ftp/python/X.X.X/Python-X.X.X.tgz
tar vzxf Python-X.X.X.tgz

在构建和安装之前,请CFLAGS用必要的 C 编译器标志设置环境变量(参见 GNU 的make文档)。这通常不是一般用途所必需的,但是,例如,如果你要用这个 python 版本创建一个 uWSGI 插件,你可能需要设置标志,-fPIC如下所示:

export CFLAGS='-fPIC'

将工作目录更改为解压后的 Python 源目录,然后配置构建。您可能希望--enable-optimizations./configure命令中使用选项进行配置文件引导优化。使用--prefix=/usr/local安装到适当的子目录(/usr/local/bin/usr/local/lib等)。

cd Python-X.X.X
./configure --enable-optimizations --prefix=/usr/local

使用 构建项目make并使用 安装,以避免在安装多个版本时覆盖任何文件。请参阅python 构建文档此页面make altinstall上的警告。

make -j 4
make altinstall

然后,您应该能够使用和pythonX.XpipX.Xpython3.8pip3.8)运行新的 python 和 pip 版本。请注意,如果新安装的次要版本与操作系统的版本相同(例如,如果您安装的是 python3.8.4 而操作系统使用的是 python3.8.2),那么您需要指定完整路径(/usr/local/bin/pythonX.X)或设置别名以使用此版本。

解决方案 6:

如何安装不同的 Python 版本确实取决于操作系统。

但是,如果您使用的是 Linux,则可以使用pythonbrew或pythonz之类的工具来帮助您轻松管理和切换不同版本。

解决方案 7:

Fedora Linux - 只需从软件包安装即可

可能值得注意的是,Fedora 发行版包含尚未 EOL 的旧版 Python。我觉得这很方便。

例如在最近的 Fedora 35(2021 年秋季)中,默认的 Python 是 3.10,但您也可以安装 3.6、3.7、3.8 和 3.9。

这些包的描述如下:

面向开发人员的 Python 3.X 包。

此软件包允许开发人员针对旧版 Python 测试其代码。这不是完整的 Python 堆栈,如果您希望使用 Python 3 运行应用程序,请参阅支持它的其他发行版,例如旧版 Fedora。

例如,要安装 3.7 作为已安装 Python 的补充(shell 命令行,以 root 身份或使用sudo

dnf install python3.7

没有pip,必须从(shell 命令行,普通用户)开始:

python3.7 -m ensurepip --user --altinstall
# --altinstall will create pip3.7 but will not overwrite pip3

然后我们就可以正常继续了:

pip3.7 install --user pytest ... # or whatever you need

解决方案 8:

2024 年更新:使用mise

Mise是安装 Python 解释器的快速工具。

mise 是一个多语言工具版本管理器。它取代了 asdf、nvm、pyenv、rbenv 等工具。

您可以按照这些说明进行安装。

# List all available Python interpreters versions:
mise ls-remote python

# Install the Python interpreters that you need:
mise install python@3.10
mise install python@3.12

# If you want to define the global version:
mise global python@3.12

# To define the local (project) version:
# (this creates a file .tool-versions in the current directory.)
mise local python@3.12

一些细节

解决方案 9:

想提出另一种方法来实现这一点,即在系统默认版本之外安装其他版本的 Python。如果您只需要为某个特定项目安装另一个版本的 Python,那么这种方法就很轻量。它使用 deadsnakes PPA,因此这特定于 Ubuntu Linux。

说明。添加 PPA

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update && sudo apt upgrade

现在假设你想要 Python 3.5:

sudo apt install python3.5 python3.5-dev python3.5-venv

如果需要的话,然后可以使用python3.5路径中的可执行文件。

现在,如果你需要为特定项目创建 venv,

cd your-project
python3.5 -m venv .venv
source .venv/bin/activate

附注 - 我确实尝试了流行的“pyenv”,但发现它在 bashrc/profile 中执行了太多操作,并且减慢了 shell 提示的速度。此外,由于要编译每个版本,因此新 Python 版本的安装非常慢。如果您需要在许多项目中频繁切换 Python 版本,那么 pyenv 可能更好。

解决方案 10:

它最依赖于您使用的软件包分发系统。例如,使用 MacPorts,您可以安装多个 Python 软件包,并使用该pyselect实用程序轻松地在它们之间切换默认软件包。在任何时候,您都可以通过提供完整路径来调用不同的 Python 解释器,并且您可以通过提供完整路径来链接到所有 Python 库和标头。

因此基本上,无论您以何种方式安装版本,只要您将安装分开,您就能够单独运行它们。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2974  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1836  
  PLM(产品生命周期管理)系统在企业的产品研发、生产与管理过程中扮演着至关重要的角色。然而,在实际运行中,资源冲突是经常会遇到的难题。资源冲突可能导致项目进度延迟、成本增加以及产品质量下降等一系列问题,严重影响企业的效益与竞争力。因此,如何有效应对PLM系统中的资源冲突,成为众多企业关注的焦点。接下来,我们将详细探讨5...
plm项目管理系统   47  
  敏捷项目管理与产品生命周期管理(PLM)的融合,正成为企业在复杂多变的市场环境中提升研发效率、增强竞争力的关键举措。随着技术的飞速发展和市场需求的快速更迭,传统的研发流程面临着诸多挑战,而将敏捷项目管理理念融入PLM,有望在2025年实现研发流程的深度优化,为企业创造更大的价值。理解敏捷项目管理与PLM的核心概念敏捷项...
plm项目   47  
  模块化设计在现代产品开发中扮演着至关重要的角色,它能够提升产品开发效率、降低成本、增强产品的可维护性与可扩展性。而产品生命周期管理(PLM)系统作为整合产品全生命周期信息的关键平台,对模块化设计有着强大的支持能力。随着技术的不断发展,到 2025 年,PLM 系统在支持模块化设计方面将有一系列令人瞩目的技术实践。数字化...
plm软件   48  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用