是否有关于Python网站的官方文档,关于如何在Linux上的同一台机器上安装和运行多个版本的Python?
我可以找到大量的博客帖子和答案,但我想知道是否有“标准”官方方式来做这件事?
或者这完全取决于操作系统吗?
答案 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包装器中键入python
或python3
来启动我想要的那个。
在Linux上,您可以使用#!
技巧来指定您希望脚本使用的版本。
答案 2 :(得分:5)
如何安装不同的Python版本确实取决于操作系统。
但是,如果您使用的是Linux,则可以使用pythonbrew或pythonz等工具来帮助您轻松管理和切换不同版本。
答案 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,但与Linux非常相似(请参见下面的链接)
#Install pyenv
brew update
brew install pyenv
假设您在Mac上将python 3.6作为主要版本:
python --version
输出:
Python <your current version>
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
答案 5 :(得分:1)
对于可以安装和管理多个python版本的软件包管理器来说,这些是不错的选择:
这些软件包管理器的优点在于,与从源代码安装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.X
和python3.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播放的视频
答案 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版本。