如何使用 apt-get 安装不同的 Python 版本?

har*_*rry 181 python apt software-installation

如何使用 apt-get 安装不同版本的 Python?

显然我意识到我可以使用源 tar ball 进行安装,但是我不想从源代码安装而是使用包管理器,因为这就是它的用途。当然,某个有信誉的地方会为我可以参考的最新 Python 版本构建 .deb 文件(为什么 python.org 不超出我的范围)。

我需要做什么来引用它们以及升级到下一个版本时可能会产生什么问题?

如果除了从源代码构建之外别无他法,是否有我可以安装的(伪)包,该包将提供所需的所有依赖项,而无需单独查找和安装每个依赖项?所以我没有得到:

The necessary bits to build these optional modules were not found:
_bz2                  _curses               _curses_panel      
_dbm                  _gdbm                 _lzma              
_sqlite3              _ssl                  _tkinter           
readline              zlib  
Run Code Online (Sandbox Code Playgroud)

Nep*_*nte 230

Felix Krull为https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa 上的许多 Ubuntu 版本运行一个 PPA,基本上提供任何版本的 Python(说真的,有 2.3.7 版本的生动...)。

照常做:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.5
Run Code Online (Sandbox Code Playgroud)

它不会覆盖您现有python3.4的仍然符号链接为python3.

不要更改符号链接!显然有很多系统功能在python3.5 下不能正常工作。

我试过了,后来无法打开终端,软件更新程序,...

cd /usr/bin
sudo rm python3
Run Code Online (Sandbox Code Playgroud)

升级到 Wily 将使元包适应python3指向python3.5. 我不希望有任何损坏,但此时不再需要外部存储库。因此,为了真正安全起见,您可以在升级之前清除 PPA。

  • 因为菜鸟就在那里,不要符号链接!也不是符号链接只是意味着您需要从命令行键入 python3.5 才能运行 python 3.5 (9认同)
  • 你能指点一下,我怎么能在这个 3.5 中使用 3.4 的 pip? (5认同)
  • 还要将 python3.5 设置为默认的 `~$ vim ~/.bashrc` 并添加这个 `alias python=python3.5`。然后`~$source ~/.bashrc` (4认同)
  • @kondra007 我按照 https://pip.pypa.io/en/stable/installing/ 的说明操作(请**阅读警告**)和这两个命令 `wget https://bootstrap.pypa.io/get -pip.py; sudo python3.5 get-pip.py` 给了我一个适用于 python 3.5 的工作点,但 pip3.4 不再工作了。如果有人知道更好,请评论 (2认同)
  • 提示:如果`add-apt-repository: command not found`,运行`apt-get install software-properties-common python-software-properties`进行安装 (2认同)

joy*_*jee 48

这个Youtube 链接帮助我安装了它。

步骤是:

sudo apt-get install libssl-dev openssl
wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
tar xzvf Python-3.5.0.tgz
cd Python-3.5.0
./configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

要检查是否安装了 python,请输入python3.5其他类型:

sudo ln -fs /opt/Python-3.5.0/Python /usr/bin/python3.5
Run Code Online (Sandbox Code Playgroud)

  • OP说他不想从源代码编译 (7认同)
  • 考虑`./configure --enable-optimizations` http://stackoverflow.com/questions/41405728/what-does-enable-optimizations-do-while-compiling-python (5认同)
  • 您还需要来自 `apt-get install build-essential` 的 c/c++ 编译器 (4认同)
  • 你是对的。此外,从源代码编译可能会进一步引入一些依赖性问题。但我就是这样解决的。如果有更好的方法,我肯定想知道。 (3认同)

Bil*_*lal 24

只需按照以下步骤(已测试):

步骤 1 – 安装所需的软件包

在安装 Python 之前,使用以下命令安装它的先决条件。

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 3.5.2

使用以下命令从 python 官方站点下载 Python。您也可以下载最新版本来代替下面指定的内容。

cd /usr/src
sudo wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
Run Code Online (Sandbox Code Playgroud)

现在解压缩下载的包。

sudo tar xzf Python-3.5.2.tgz
Run Code Online (Sandbox Code Playgroud)

第 3 步 - 编译 Python 源代码

使用以下命令集在您的系统上使用 altinstall 编译 python 源代码。

cd Python-3.5.2
sudo ./configure
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)

make altinstall用于防止替换默认的 python 二进制文件/usr/bin/python

第 4 步 – 检查 Python 版本

使用以下命令检查安装的最新版本的 python。

$ python3.5 -V

Python 3.5.2
Run Code Online (Sandbox Code Playgroud)

来源

  • +1 默认使用 altinstall。没有多少真实场景可以让您只使用一个版本。即使是默认使用 Python3 的系统,您也可能被迫以相反的方式安装 Python -> Python2 或添加 Python2。 (3认同)

Cir*_*郝海东 20

pyenv

此方法不使用apt-get,但我相信它是当今可用的最佳选择,因为它可以轻松地从源代码为您编译任何 Python 版本,因此您不必依赖任何 PPA。

https://github.com/pyenv/pyenv

Pyenv 允许您为单个用户管理多个 Python 版本,无需 sudo,就像Node.js NVMRuby RVM一样。

安装 Pyenv:

curl https://pyenv.run | bash
Run Code Online (Sandbox Code Playgroud)

然后添加到您的.bashrc

export PATH="${HOME}/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Run Code Online (Sandbox Code Playgroud)

找到要安装的Python版本:

pyenv install --list
Run Code Online (Sandbox Code Playgroud)

安装你想要的python版本:

# Increase the chances that the build will have all dependencies.
# https://github.com/pyenv/pyenv/wiki/Common-build-problems
sudo apt build-dep python3
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
  libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
  xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

# Build and install a Python version from source.
pyenv install 3.8.0
Run Code Online (Sandbox Code Playgroud)

列出可用的 Python 版本:

pyenv versions
Run Code Online (Sandbox Code Playgroud)

我们现在有:

* system (set by /home/cirsan01/.pyenv/version)
  3.8.0
Run Code Online (Sandbox Code Playgroud)

选择不同的 python 版本:

pyenv global 3.8.0
python --version
python3 --version
Run Code Online (Sandbox Code Playgroud)

两者输出:

Python 3.8.0
Run Code Online (Sandbox Code Playgroud)

我们现在可以继续正常安装和使用软件包:

pip install cowsay
python -c 'import cowsay; cowsay.tux("Python is fun")'
cowsay 'hello'
Run Code Online (Sandbox Code Playgroud)

我们可以通过以下方式确认所有内容都已本地安装在我们干净的环境中:

python -c 'import cowsay; print(cowsay.__file__)'
which cowsay
Run Code Online (Sandbox Code Playgroud)

我们看到这which python表明:

~/.pyenv/shims/python
Run Code Online (Sandbox Code Playgroud)

因为~/.pyenv/shims是在PATHrc 脚本前面加上的。

TODO 进一步了解。全球版本由以下因素决定:

~/.pyenv/version
Run Code Online (Sandbox Code Playgroud)

现在包含:

3.8.0
Run Code Online (Sandbox Code Playgroud)

每个项目的使用情况

在上一节中,我们了解了如何在全局设置中使用 pyenv。

但是,您通常想要的是为每个项目设置特定的 python 和包版本。这是如何做到的。

首先像以前一样安装所需的 Python 版本。

然后,从项目目录中设置所需的 python 版本:

pyenv local 3.8.0
Run Code Online (Sandbox Code Playgroud)

.python-version它创建一个包含版本字符串的文件。

现在让我们在本地为我们的项目安装一个包: TODO:似乎没有什么好的方法: https: //stackoverflow.com/questions/30407446/pyenv-choose-virtualenv-directory/59267972#59267972

现在,当有人想要使用您的项目时,他们会这样做:

pyenv local
Run Code Online (Sandbox Code Playgroud)

这会将 Python 版本设置为正确的版本。

相关主题:

在 Ubuntu 18.04、pyenv 1.2.15 上测试。

  • 如果您运行的是 Ubuntu 22,则应将“python-openssl”软件包替换为“python3-openssl”。 (2认同)

Cha*_*ker 5

据我所知,至少在 docker 容器中,可以明确地使用apt-getpython 3。

首先,我遇到了一个带有容器的 ubuntu 容器:

docker run -it --rm ubuntu:latest bash
Run Code Online (Sandbox Code Playgroud)

然后由于某种原因它需要更新一些 ubuntu 的东西所以我做了(在容器内):

apt-get update && apt-get install -y build-essential git libjpeg-dev
Run Code Online (Sandbox Code Playgroud)

然后我简单地安装了python3,它似乎自动获得了python 3.5:

apt-get install python3
apt-get install python3-pip
Run Code Online (Sandbox Code Playgroud)

并测试 pip 是否有效让我们下载一些东西:

pip3 install tensorflow
Run Code Online (Sandbox Code Playgroud)

一切似乎对我来说都很好。

重要提示:如果您已经安装了 python 3.4,那么它似乎apt-get install python3不起作用,因为它说您已经安装了它。这似乎是我的问题之一,因为我是从 tensorflow 的 docker 图像(特别是gcr.io/tensorflow/tensorflow:latest-devel-py3)和该图像中的某些内容(我假设他们已经拥有 python 3.4,但可能还有其他内容)开始,但不允许我更新我的python 得到python 3.5。


信用:当我问以下问题时,我发现了这一点:https : //stackoverflow.com/questions/42122826/can-one-use-python-3-5-in-a-docker-container-based-out-of-the -tensorflow-docker


注意:也可以只安装 Anaconda。对于 docker 示例,可以执行以下操作:

docker pull continuumio/anaconda3
docker run -i -t continuumio/anaconda3 /bin/bash
Run Code Online (Sandbox Code Playgroud)

来自他们的官方网站:https : //hub.docker.com/r/continuumio/anaconda3/

这个解决方案安装了 python 3.6,但我相信如果你在那里查看它,你可以获得 python 3.5,如果那是你想要的。

注意:无论如何,除非您使用 docker,否则您可能应该使用虚拟环境,例如 virtual env 或 conda/anaconda。只是想提醒人们。

  • “在 docker 容器中”是一个非常通用的声明:这完全取决于容器基于哪个映像,例如哪个版本的 Ubuntu。此外,可能存在一个 Ubuntu 版本(例如 14.04)中不可用的次要版本,例如 3.5 或 3.6 (2认同)

归档时间:

查看次数:

377267 次

最近记录:

5 年,4 月 前