如何使用 apt-get 安装 Python 3.6?

Oli*_*n04 430 apt python3 software-installation

我已经尝试了正常的方法,sudo apt-get install python3.6但是……好吧……那没有用。

那么,我该怎么办呢?(我最好不要自己构建它)

我正在使用 Ubuntu 16.04。

edw*_*ksl 611

Ubuntu 14.04(可信赖)和 16.04(Xenial)

如果您使用的是 Ubuntu 14.04 或 16.04,则可以在https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa使用 Felix Krull 的 deadsnakes PPA :

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

J Fernyhough 的 PPA(在https://launchpad.net/~jonathonf/+archive/ubuntu/python-3.6)曾经是一个替代选项,但他已将其关闭以抗议(ab)使用。

注意:似乎这个ppa repo up to python 3.8,
并关闭了旧的python 3.6 repo,但仍然无法安装pip。
https://launchpad.net/~jonathonf/+archive/ubuntu/python-3.8

Ubuntu 16.10 和 17.04

如果您使用的是 Ubuntu 16.10 或 17.04,则 Python 3.6 位于 Universe 存储库中,因此您只需运行:

sudo apt-get update
sudo apt-get install python3.6
Run Code Online (Sandbox Code Playgroud)

为 Ubuntu 14.04、16.04、16.10 和 17.04 安装后

要调用 Python 3.6 解释器,请运行python3.6.

Ubuntu 17.10、18.04(仿生)及更高版本

Ubuntu 17.10 和 18.04 已经默认使用 Python 3.6。只需运行python3即可调用它。

  • ***注意*** - 在任何情况下都不要试图运行 `sudo apt remove python3.5` 或类似的东西;Python 比你想象的更根本地融入 Ubuntu,你可能会破坏你的 Ubuntu 安装。如果您希望 `python3` 映射到 `python3.6`,请创建一个符号链接! (123认同)
  • 我看到没有`python3.6-pip`包,所以我使用了`curl https://bootstrap.pypa.io/get-pip.py | sudo python3.6` 来安装 `pip`。 (31认同)
  • 请注意,Ubuntu 16.10 中的 python3.6 是一个 beta 版本,它存在一些问题(例如在极少数情况下会出现在 `dict` 中非常痛苦的内存泄漏)。 (6认同)
  • 像上面的其他一些评论者一样,我也无法使用 `ppa:jonathonf/python-3.6` 安装 `pip`。另一方面,`ppa:deadsnakes/ppa` 运行完美(`apt-get install python3.6 python3.6-venv -y`)。 (6认同)
  • 不知何故,来自`ppa:jonathonf/python-3.6` 的 python 到了 14.04 时,pip 损坏了,并且没有 easy_install。但是,我通过安装easy_install然后通过`curl https://bootstrap.pypa.io/ez_setup.py -o - | 重新安装pip设法修复了它。python3.6 && python3.6 -m easy_install pip` 以防万一有人遇到同样的问题...... (5认同)
  • @Olian04 没问题!作为一般提示,J Fernyhough 在 https://launchpad.net/~jonathonf 上有很多有用的 PPA。如果您需要 PPA,请务必查看那里。 (2认同)
  • python 3.6的`ppa:jonathonf`版本似乎不包含`pip`甚至`ensurepip`,因此安装包非常困难。我应该如何解决这个问题? (2认同)
  • 那么哪个 repo 更好,Ferny 还是 Felix? (2认同)
  • @Huw 如果您的意思是更改 /usr/bin/python3 处的符号链接,那也是一个坏主意。别名会更好,IMO。有关后果的示例,请参阅 [Gnome 终端将无法启动](https://askubuntu.com/q/880188/301745)。 (2认同)

Nic*_*k T 153

我会推荐pyenv来解决你的问题。它不使用 Aptitude,并且确实涉及“自己构建”,但它是完全自动化的。您只需说pyenv install 3.6.0. 一切都以您的用户身份运行,因此您不必担心弄乱Ubuntu 本身使用的 Python

另外,对后续问题“如何使用 apt-get 安装 Python 3.7?”的回答。有相同的答案:pyenv update; pyenv install 3.7.0。它通常会在发布的同一天工作,因为您不需要等待其他人为 Ubuntu 打包它。查看您可以安装的所有版本pyenv install --list

安装pyenv

  1. 安装构建 CPython 所需的工具和头文件(像 PyPy 或 Jython 这样的外来 Python 可能有其他依赖项)。pyenv 使用 Git,此外它还支持构建/安装源分支,因此您现在可以安装任何 3.8,即 CPython 的 master 分支,从 GitHub 新鲜出:

    sudo apt-get install -y git
    sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \
                            libffi-dev libsqlite3-dev tk-dev
    
    # optional scientific package headers (for Numpy, Matplotlib, SciPy, etc.)
    sudo apt-get install -y libpng-dev libfreetype6-dev    
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行安装程序脚本(安装 pyenv 和原作者的一些非常有用的 pyenv 插件;请参阅此处了解更多信息)

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将 init 行添加到您的~/.profileor ~/.bashrc(它在安装脚本的末尾提到它):

    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新启动您的 shell(关闭并打开或exec $SHELL)或重新加载配置文件脚本。(例如source ~/.bashrc

完毕!

设置环境

为了不接触系统 Python(通常是个坏主意;操作系统级服务可能依赖于某些特定的库版本等)创建自己的环境,这很容易!更好的是,不sudo,为它或pip安装!

  1. 安装您首选的 Python 版本(这将下载源代码并为您的用户构建它,无需输入)

    pyenv install 3.6.0
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将其设置为 virtualenv,以便您以后可以根据需要创建其他人

    pyenv virtualenv 3.6.0 general
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使其全局激活(为您的用户)

    pyenv global general
    
    Run Code Online (Sandbox Code Playgroud)
  4. 用 Python/pip 等做你想做的事。这是你的。

如果你想稍后清理你的库,你可以删除 virtualenv ( pyenv uninstall general) 或创建一个新的 ( pyenv virtualenv 3.6.0 other_proj)。您还可以让每个目录的环境处于活动状态:pyenv local other_proj将一个.python-version文件放入您的当前文件夹,并且每当您从它或在它下面调用 Python 或 pip 安装的 Python 实用程序时,它们都会被 pyenv 填充。

故障排除

  • bash: pyenv: command not found, fish: Unknown command 'pyenv'

    1. 检查您的$PATH,应该有一个以类似.pyenv/bin. 如果它丢失,请确保您遵循上面安装 pyenv 下的#3和 #4(重新启动您的外壳)。
  • pyenv: no such command 'virtualenv'

    1. 如果您没有使用安装程序脚本,您可能只安装了根 pyenv 包。有关添加插件的说明,请参阅pyenv-virtualenv
    2. 如果您使用了安装程序脚本,请检查它是否显示为pyenv commands.

  • 我不知道,但是我通过帮助 IRC 上的某个人调试特定 Python 包(lxml?)因此无法工作的问题发现了这个问题。所以它在实践中发生在某些人身上,值得了解。(解决方法是`rm -r ~/.cache/pip/wheels/`。) (3认同)

Ary*_*bek 20

这取决于您使用的是哪个版本的 Ubuntu。

Ubuntu 16.10 和 Ubuntu 17.04

由于 Python 3.6 安装在 Ubuntu 16.10 和 Ubuntu 17.04 的 Universe 存储库中,因此您可以直接从存储库安装 Python 3.6。只需使用以下命令:

sudo apt update
sudo apt install python3.6
Run Code Online (Sandbox Code Playgroud)

Ubuntu 16.04

在Ubuntu 16.04上安装Python3.6有两种方式

  • 在 Ubuntu 16.04 上编译安装 python 3.6
  • 从 PPA 在 Ubuntu 16.04 上安装 python 3.6

1.在Ubuntu 16.04上编译安装python 3.6

安装必要的依赖,下载python 3.6源码,搭建环境并安装

sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
tar xvf Python-3.6.0.tar.xz
cd Python-3.6.0/
./configure
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)

2.从PPA在Ubuntu 16.04上安装python 3.6

您可以使用以下命令从 PPA 安装 Python 3.6

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

如果正确安装了 Python 3.6,则可以通过python3.6在终端中运行来调用 Python 解释器。

我希望这有帮助。如果您有任何问题,可以在此处查看此博客文章。

  • 这本质上是已接受答案的副本。你的答案的附加价值在哪里? (4认同)
  • Ubuntu 16.04 的第一步是为那些出于某种原因想要编译和安装 python 3.6 的人准备的。在 Ubuntu 16.04 上编译和安装 Python 3.6 的过程在接受的答案或线程中的任何答案中均不可用。其他要点是明确 Ubuntu 的版本以及它与其他公认的答案有何不同。 (2认同)

Jus*_*ake 14

如果您找不到任何可用的存储库,另一种方法是您可以尝试从源代码编译自己。您可以在下载页面上找到源代码。然后下载并解压压缩包;例如对于Python-3.6.1.tgz.

解压 tgz 文件的过程是:

tar -xvzf /path/to/yourfile.tgz
Run Code Online (Sandbox Code Playgroud)

进入文件解压缩到的文件路径后,运行:

./configure
make
make altinstall
Run Code Online (Sandbox Code Playgroud)

希望这可以为您解决问题。

  • 问题是“(我最好不要自己构建它)”。如果可能的话,也许最好走 `apt` 路线。 (4认同)

小智 5

您最好的选择是升级到 Ubuntu 20.04,然后从deadsnakesPPA安装它:

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

否则,您可以尝试找出如何deadsnakes在他们不支持的 Ubuntu 版本上安装 PPA。它们仅支持 Ubuntu 的长期支持 (LTS) 版本,19.04 和 19.10 不支持(但 Ubuntu 20.04 是)。我可以发誓我在 Github 上的某个地方看到了一个关于人们这样做的帖子https://github.com/deadsnakes/issues/issues?q=is%3Aissue+is%3Aclose但我现在找不到它。

另请查看有关下载 deb 包的答案/sf/answers/3910104411/

但是,如果您不能做到其中任何一个,那么您最后的手段就是从源代码编译它,您可以通过首先安装 C 编译器来完成

sudo apt install gcc
Run Code Online (Sandbox Code Playgroud)

然后访问https://www.python.org/downloads/并找到最新的 3.6 微型版本(我正在写这篇文章时为 3.6.10)并从源代码编译它,如下所示

wget -P ~/Downloads https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tar.xz
cd ~/Downloads
tar -xJf Python-3.6.10.tar.xz
cd Python-3.6.10
Run Code Online (Sandbox Code Playgroud)

进而

./configure
make
make test
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)

最后一个命令使用altinstall而不是install3.6 安装为python3.6pip3.6。如果您将最后一个命令更改为sudo make install(不带alt),那么会将其安装为python3,这将覆盖您现在安装的 Python 3.7(和 pip)版本。

更新留给读者作为练习。