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

时间:2010-03-30 18:19:36

标签: python

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

我可以找到大量的博客帖子和答案,但我想知道是否有“标准”官方方式来做这件事?

或者这完全取决于操作系统吗?

10 个答案:

答案 0 :(得分:65)

我认为它是完全独立的。只需安装它们,然后就可以输入命令,例如/usr/bin/python2.5/usr/bin/python2.6。将/usr/bin/python链接到您要用作默认值的那个。

无论如何,所有库都在不同的文件夹中(以版本命名)。

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

  

安装多个版本

     

在Unix和Mac系统上,如果您打算安装多个版本的Python   使用相同的安装前缀(configure的--prefix参数   脚本)你必须注意你的主要python可执行文件不是   被不同版本的安装覆盖。所有文件和   使用“make altinstall”安装的目录包含major和minor   版本,因此可以并排生活。 “make install”也创造了   $ {prefix} / bin / python3引用$ {prefix} /bin/pythonX.Y。如果你打算   要使用相同的前缀安装多个版本,您必须决定使用哪个   版本(如果有)是您的“主要”版本。使用安装该版本   “make install”。使用“make altinstall”安装所有其他版本。

     

例如,如果要安装带有2.6的Python 2.5,2.6和3.0   在主要版本中,您将在2.6版本中执行“make install”   目录和其他人的“make altinstall”。

答案 1 :(得分:23)

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

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

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

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:4)

如果你需要在 Ubuntu / Mint 上安装多个版本的Python(在主要版本旁边):(应该在其他Unix上运行类似。)

1)为源编译安装必需的包

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

2)下载并提取所需的Python版本

Download Python Source for Linux作为tarball并将其移至/usr/src

提取已下载的软件包。 (用您下载的版本替换'x')

$ sudo tar xzf Python-x.x.x.tgz

3)编译并安装Python源

$ cd Python-x.x.x
$ 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)

答案 4 :(得分:2)

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

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

#Install pyenv
brew update
brew install pyenv

假设您在Mac上将python 3.6作为主要版本:

python --version 

输出:

Python <your current version>

现在安装python 3.7,首先列出所有

pyenv install -l

以3.7.3为例:

pyenv install 3.7.3

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

export PATH="/Users/username/.pyenv:$PATH"
eval "$(pyenv init -)"

现在,仅在打开的terminal/shell上运行它:

pyenv shell 3.7.3

现在运行

python --version

输出:

Python 3.7.3

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

pyenv shell --unset

您也可以globallylocally运行

答案 5 :(得分:1)

包管理器-用户级

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

  • pyenv-仅能安装和管理python版本
  • asdf-能够安装和管理许多不同的语言

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

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


从源安装-系统范围

此方法需要root特权。

有关其他注意事项和选项,请参见official python documentation for building from source

~/.bashrc是系统管理员用于安装共享(系统范​​围)软件的指定位置,因此,它的子目录是下载python源代码并进行安装的好地方。参见section 4.9 of the Linux Foundation's File Hierarchy Standard

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

/usr/local

选择要安装的python版本。请参见Python Source Releases页面以获取列表。

下载apt update apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev 中的文件并解压缩,然后将下面的/usr/local/src替换为python版本(即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 环境变量设置必要的C编译器标志(请参见GNU的make documentation)。通常,这对于一般用途不是必需的,但是例如,如果您要使用此python版本创建uWSGI插件,则可能需要使用以下设置标志CFLAGS

-fPIC

将工作目录更改为解压缩的python源目录,并配置构建。您可能想对profile guided optimization使用export CFLAGS='-fPIC' 命令上的--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构建文档中this page上的警告。

make altinstall

然后,您应该能够使用make -j 4 make altinstall pythonX.X(即pipX.Xpython3.8)运行新的python和pip版本。请注意,如果新安装的次版本与操作系统的版本相同(例如,如果您正在安装python3.8.4,并且操作系统使用python3.8.2),则需要指定完整路径({{1} })或设置别名以使用此版本。

答案 6 :(得分:0)

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

基本上,无论您安装哪个版本,只要您将安装分开,您就可以单独运行它们。

答案 7 :(得分:0)

我是用anaconda导航器完成的。我安装了anaconda导航器,并使用不同的python版本创建了两个不同的开发环境

并通过切换或激活和停用环境来在不同的python版本之间进行切换。

首先安装anaconda导航器,然后创建环境。

在此处查看有关如何管理环境的帮助

https://docs.anaconda.com/anaconda/navigator/tutorials/manage-environments/

这是用conda播放的视频

https://youtu.be/EGaw6VXV3GI

答案 8 :(得分:0)

想用另一种方式来做到这一点,即在系统默认值的同时安装额外的 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 可能会更好。

答案 9 :(得分:0)

我建议使用 pyenv。是一个python版本管理器,可以帮助你在同一台机器上管理多个python版本。