有关Python网站上的官方文档,如何在Linux上的同一台机器上安装和运行多个版本的Python?
我可以找到大量的博客帖子和答案,但我想知道是否有"标准"官方方式这样做?
或者这完全取决于操作系统?
Fel*_*ing 68
我认为它是完全独立的.只需安装它们,然后你就可以使用命令/usr/bin/python2.5和/usr/bin/python2.6.链接/usr/bin/python到您要用作默认值的链接.
无论如何,所有库都在单独的文件夹中(以版本命名).
如果要手动编译版本,请参阅Python源代码的自述文件:
安装多个版本
在Unix和Mac系统上,如果您打算使用相同的安装前缀(configure脚本的--prefix参数)安装多个版本的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是主要版本,则可以在2.6 build目录中执行"make install",在其他目录中执行"make altinstall".
小智 24
在Windows上,它们被安装到单独的文件夹"C:\ python26"和"C:\ python31",但可执行文件具有相同的"python.exe"名称.
我创建了另一个"C:\ python"文件夹,其中包含"python.bat"和"python3.bat",分别作为"python26"和"python31"的包装,并将"C:\ python"添加到PATH环境变量中.
这允许我输入python或python3在我的.bat Python包装器中启动我想要的那个.
在Linux上,您可以使用该#!技巧指定希望脚本使用的版本.
Rot*_*eti 15
asdf这些天我建议使用asdf来安装各种版本的 Python 解释器。
注 1:asdf不仅适用于 Python,还适用于所有主要语言。
注2:asdf与流行的包管理器(如pipenv和诗歌)结合使用效果很好。
如果您安装了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
Run Code Online (Sandbox Code Playgroud)
如果您需要在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
Run Code Online (Sandbox Code Playgroud)
2) 下载并解压所需的 Python 版本
将 Linux 的 Python 源下载为 tarball 并将其移动到/usr/src.
将下载的包解压到位。(用您下载的版本替换“x”)
$ sudo tar xzf Python-x.x.x.tgz
Run Code Online (Sandbox Code Playgroud)
3)编译安装Python源码
$ cd Python-x.x.x
$ sudo ./configure
$ sudo make altinstall
Run Code Online (Sandbox Code Playgroud)
您的新 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)
Run Code Online (Sandbox Code Playgroud)
blu*_*cat 11
对于可以安装和管理多个版本的 python 的包管理器,以下是不错的选择:
这些包管理器的优点是,设置它们并使用它们安装多个版本的 python 可能比从源代码安装 python 更容易。它们还提供了使用 shims 轻松更改可用 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
Run Code Online (Sandbox Code Playgroud)
选择您要安装的 python 版本。请参阅Python 源代码发布页面以获取列表。
下载并解压 中的文件/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
Run Code Online (Sandbox Code Playgroud)
在构建和安装之前,请CFLAGS使用必要的 C 编译器标志设置环境变量(请参阅 GNUmake文档)。这对于一般用途来说通常是不必要的,但是,例如,如果您要使用此 python 版本创建一个 uWSGI 插件,您可能需要-fPIC使用以下内容设置标志 :
export CFLAGS='-fPIC'
Run Code Online (Sandbox Code Playgroud)
将工作目录更改为解压后的 python 源目录,并配置构建。您可能需要使用命令--enable-optimizations上的选项./configure进行配置文件引导优化。用于--prefix=/usr/local安装到正确的子目录(/usr/local/bin、/usr/local/lib等)。
cd Python-X.X.X
./configure --enable-optimizations --prefix=/usr/local
Run Code Online (Sandbox Code Playgroud)
构建项目并make安装,make altinstall以避免在安装多个版本时覆盖任何文件。请参阅python 构建文档此页上的警告。
make -j 4
make altinstall
Run Code Online (Sandbox Code Playgroud)
然后您应该能够使用pythonX.X和pipX.X(即python3.8和pip3.8)运行新的 python 和 pip 版本。请注意,如果新安装的次要版本与操作系统版本相同(例如,如果您安装的是 python3.8.4 并且操作系统使用 python3.8.2),那么您需要指定整个路径 ( ) 或/usr/local/bin/pythonX.X设置使用此版本的别名。
以下命令适用于 Mac,但与 Linux 非常相似(请参阅下面的链接)
#Install pyenv
brew update
brew install pyenv
Run Code Online (Sandbox Code Playgroud)
假设您在 Mac 上使用 python 3.6 作为主要版本:
python --version
Run Code Online (Sandbox Code Playgroud)
输出:
Python <your current version>
Run Code Online (Sandbox Code Playgroud)
pyenv install -l
Run Code Online (Sandbox Code Playgroud)
让我们以 3.7.3 为例:
pyenv install 3.7.3
Run Code Online (Sandbox Code Playgroud)
确保在终端中运行它(将它添加到 ~/.bashrc 或 ~/.zshrc):
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
Run Code Online (Sandbox Code Playgroud)
现在让我们只在打开的终端/shell上运行它:
pyenv shell 3.7.3
Run Code Online (Sandbox Code Playgroud)
python --version
Run Code Online (Sandbox Code Playgroud)
输出:
Python 3.7.3
Run Code Online (Sandbox Code Playgroud)
同样重要的是在打开的 shell/iTerm 中取消设置它:
pyenv shell --unset
Run Code Online (Sandbox Code Playgroud)