Python网站上是否有官方文档,内容涉及如何在Linux的同一台计算机上安装和运行多个版本的Python?
我可以找到成千上万的博客文章和答案,但是我想知道是否有“标准”的官方方式来做到这一点?
还是全部取决于操作系统?
Python网站上是否有官方文档,内容涉及如何在Linux的同一台计算机上安装和运行多个版本的Python?
我可以找到成千上万的博客文章和答案,但是我想知道是否有“标准”的官方方式来做到这一点?
还是全部取决于操作系统?
Answers:
我认为这是完全独立的。只需安装它们,然后即可使用命令例如/usr/bin/python2.5和/usr/bin/python2.6。链接/usr/bin/python到您要用作默认值的那个。
无论如何,所有库都位于单独的文件夹中(以版本命名)。
如果要手动编译版本,则来自Python源代码的自述文件:
安装多个版本
在Unix和Mac系统上,如果要使用相同的安装前缀(配置脚本的--prefix参数)安装多个版本的Python,则必须注意主要的python可执行文件不会被其他版本的安装覆盖。使用“ make altinstall”安装的所有文件和目录都包含主要版本和次要版本,因此可以并行存在。“ make install”还会创建$ {prefix} / bin / python3,它引用了$ {prefix} /bin/pythonX.Y。如果打算使用相同的前缀安装多个版本,则必须确定哪个版本(如果有)是您的“主要”版本。使用“进行安装”安装该版本。使用“ make altinstall”安装所有其他版本。
例如,如果要以2.6为主要版本安装Python 2.5、2.6和3.0,则可以在2.6构建目录中执行“ make install”,在其他构建目录中执行“ make altinstall”。
在Windows上,它们安装到单独的文件夹“ C:\ python26”和“ C:\ python31”,但是可执行文件具有相同的“ python.exe”名称。
我创建了另一个“ C:\ python”文件夹,其中包含“ python.bat”和“ python3.bat”,分别用作“ python26”和“ python31”的包装,并将“ C:\ python”添加到PATH环境变量中。
这使我可以在.bat Python包装器中键入python或python3启动所需的包装器。
在Linux上,您可以使用#!技巧指定脚本要使用的版本。
py -3.4或py -2.7,程序py(在下方C:\Windows)将选择该python解释器(假设已安装)。
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
如果您需要在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版本
将Linux的Python Source下载为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容器现在位于中/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)
以下命令适用于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 -)"
现在,仅在打开的终端/外壳上运行它:
pyenv shell 3.7.3
python --version
输出:
Python 3.7.3
同样重要的是,在打开的shell / iTerm中将其取消设置:
pyenv shell --unset
对于可以安装和管理多个版本的python的软件包管理器,这些是不错的选择:
这些软件包管理器的优点在于,与从源代码安装python相比,使用它们安装和安装多个版本的python可能更容易。它们还提供了一些命令,这些命令可使用垫片轻松更改可用的python版本,并按目录设置python版本。
缺点是,默认情况下,它们安装在用户级别(位于主目录中),并且需要一些用户级别的配置-您需要编辑您的~/.profile和/~/.bashrc或类似文件。这意味着要使用它们为所有用户全局安装多个python版本并不容易。为此,您可以从源代码安装操作系统的现有python版本。
您需要此方法的root特权。
有关其他注意事项和选项,请参见官方python文档以从源代码进行构建。
/usr/local是系统管理员安装共享(系统范围内)软件的指定位置,因此它的子目录是下载python源代码并进行安装的好地方。请参阅Linux Foundation的文件层级标准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 Source Releases页面。
在中下载并解压缩文件,然后在下面/usr/local/src替换X.X.X为python版本(即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编译器标志设置环境变量(请参阅GNUmake文档)。通常,这对于一般用途而言不是必需的,但是例如,如果您要使用此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
使用Build项目进行make安装,make altinstall以避免在安装多个版本时覆盖任何文件。请参阅python构建文档此页上的警告。
make -j 4
make altinstall
然后,您应该可以使用pythonX.X和pipX.X(即python3.8和pip3.8)运行新的python和pip版本。请注意,如果新安装的次要版本与操作系统的版本相同(例如,如果您正在安装python3.8.4,并且操作系统使用python3.8.2),则需要指定完整路径(/usr/local/bin/pythonX.X)或设置一个别名以使用此版本。
它很大程度上取决于您使用的软件包分发系统。例如,使用MacPorts,您可以安装多个Python程序包,并使用该pyselect实用程序在它们之间轻松切换默认值。在任何时候,您都可以通过提供完整路径来调用不同的Python解释器,并且可以通过提供所有路径来链接所有Python库和标头。
因此,基本上,无论采用哪种方式安装版本,只要将安装分开,就可以分别运行它们。
我是用anaconda导航器完成的。我安装了anaconda导航器,并使用不同的python版本创建了两个不同的开发环境
并通过切换或激活和停用环境在不同的python版本之间切换。
首先安装anaconda导航器,然后创建环境。
在此处查看有关如何管理环境的帮助
https://docs.anaconda.com/anaconda/navigator/tutorials/manage-environments/
这是使用conda的视频