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


363

我已经尝试了正常的方式,sudo apt-get install python3.6但是...嗯...那没用。

那么,我将如何处理呢?(我最好不要自己构建)

我正在使用Ubuntu 16.04。


5
可能无法使用python 3.6。如果您已安装aptitude,请运行aptitude search python3
ridgy 2013年

Answers:


524

Ubuntu 14.04(Trusty),16.04(Xenial)

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

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6

或者,您可以在以下网址使用J Fernyhough的PPA:https://launchpad.net/~jonathonf/+archive/ubuntu/python-3.6 :

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

Ubuntu 16.10、17.04

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

sudo apt-get update
sudo apt-get install python3.6

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

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

Ubuntu 17.10和18.04(Bionic)

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


5
请注意,Ubuntu 16.10中的python3.6是一个Beta版本,存在一些问题(例如dict在某些罕见情况下会出现非常痛苦的内存泄漏)。
Marius Gedminas

102
注意 -在任何情况下都不要试图运行sudo apt remove python3.5或类似的东西;从根本上说,Python比您想象的要更深入地融入Ubuntu,并且您可能会中断Ubuntu的安装。如果要python3映射到python3.6,请创建符号链接!
Huw Walters

19
我看到没有python3.6-pip软件包,所以我习惯curl https://bootstrap.pypa.io/get-pip.py | sudo python3.6了安装pip
Acumenus

5
莫名其妙的python来自ppa:jonathonf/python-3.6pip破损,在14.04上没有easy_install。但是,我设法通过安装easy_install来修复它,然后通过重新安装pip curl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && python3.6 -m easy_install pip以防万一有人遇到相同的问题……
FirefoxMetzger

6
像上面的其他评论者一样,我也很难pip安装ppa:jonathonf/python-3.6。另一方面,可以ppa:deadsnakes/ppa完美地工作(apt-get install python3.6 python3.6-venv -y)。
Michael Herrmann

133

我建议pyenv解决您的麻烦。它不使用Aptitude,而是涉及“自己构建”,但是它是完全自动化的。您可以通过简单地说来构建和安装新(或旧)版本的Python 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    
    
  2. 运行安装程序脚本(由原作者安装pyenv和一些非常有用的pyenv插件;有关更多信息,请参见此处

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

    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
  4. 重新启动外壳程序(关闭并打开或exec $SHELL),或重新加载配置文件脚本。(例如source ~/.bashrc

做完了!

搭建环境

不用接触系统Python(通常是个坏主意; OS级服务可能依赖于某些特定的库版本等),使您自己的环境变得容易!更好的是,没有sudo,因为它没有pip安装!

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

    pyenv install 3.6.0
  2. 将其设置为virtualenv,以便以后可以创建其他文件

    pyenv virtualenv 3.6.0 general
  3. 将其全局激活(针对您的用户)

    pyenv global general
  4. 使用Python / pip等来做您想做的事情。

如果以后要清理库,则可以删除virtualenv(pyenv uninstall general)或新建一个(en pyenv virtualenv 3.6.0 other_proj)。您还可以按目录激活活动环境:pyenv local other_proj.python-version文件拖放到当前文件夹中,并且每次您从该文件或其下调用Python或pip安装的Python实用程序时,它们都会被pyenv填充。

故障排除

  • bash: pyenv: command not foundfish: Unknown command 'pyenv'

    1. 检查一下$PATH,应该有一个以.pyenv/bin。结尾的条目。如果缺少它,请确保遵循上面的安装pyenv下的#3 AND#4(重新启动外壳)。
  • pyenv: no such command 'virtualenv'

    1. 如果您不使用安装程序脚本,则可能只安装了pyenv根软件包。请参阅pyenv-virtualenv以获取添加插件的说明
    2. 如果您使用了安装程序脚本,请使用进行检查pyenv commands

1
当将pyenv与Python 2.x(或在新的Unicode字符串内部表示发生之前的非常老的3.x版本)一起使用时,有一个警告:pyenv使用默认的上游编译标志并使用16位Unicode字符串进行构建。Linux发行版通常使用32位Unicode字符串构建。当您将一些东西pip安装到pyenv和非pyenv Python中时,这会导致痛苦,因为pip wheel缓存的原因。
Marius Gedminas

@marius为什么安装后会使用非pyenv版本?
尼克T

3
我不知道,但是我通过帮助IRC上的某人调试某个特定的Python软件包(lxml?)由于此原因而无法工作的问题来发现了这个问题。因此,它在实践中对某些人来说是发生的,值得一读。(解决方法是rm -r ~/.cache/pip/wheels/。)
Marius Gedminas

1
是否pyenv需要为每个需要Python的用户安装?如果我有3个用户需要相同的Python 3.6版本,那么它将不得不编译3次,并且将占用3倍的磁盘空间?如果那是真的,那真是糟透了……:/
Sarge Borsch

1
默认情况下,@ SargeBorsch(如果您使用pyenv-installer)是用户安装,但是并没有阻止您将其安装到/opt或其他任何方式并向添加符号链接的功能/bin。我发现只有用户才能使用它非常有用;用户不需要sudo(libs除外)。磁盘空间很便宜。
尼克T

14

这取决于您使用的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

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

2.通过PPA在Ubuntu 16.04上安装python 3.6

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

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt update
sudo apt install python3.6

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

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


2
这实质上是已接受答案的副本。您的答案的附加价值在哪里?
Marc Vanhoomissen

2
Ubuntu 16.04的第一步是针对出于某些原因想要编译和安装python 3.6的用户。对此,已接受的答案或线程中的任何答案均不提供在Ubuntu 16.04上编译和安装Python 3.6的过程。其他要点是要弄清楚Ubuntu的版本以及它与其他公认答案的区别。
Aryal Bibek

1
PPA安装在16.04(Mint)上似乎已损坏。通过源信息进行安装非常有用。
痴呆的刺猬

13

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

解压缩tgz文件的过程为:

tar -xvzf /path/to/yourfile.tgz

进入文件路径后,将其解压缩到文件中,然后运行:

./configure
make
make altinstall

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


4
问题说(id preferably not build it on my own)。如果可能的话,最好走这apt条路线。
TheWanderer

好的,我来看一下是否可以为您找到任何其他存储库。您是否有机会亲自在Google上寻找替代存储库?我不想建议您已经尝试过的事情。
准时Berlake

我不是OP。只是提出一个建议。我找不到用于3.6的任何PPA,因此构建可能是必要的路线。您可能应该在回答中解决这个问题。
TheWanderer

您的make命令将在用户从未构建任何东西的系统上失败,因为需要许多软件包。“ sudo apt安装必不可少的libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev tk-dev”
Joe

4

对于Ubuntu 15.10,我使用以下方法成功安装了它:

sudo add-apt-repository ppa:jonathonf/python-3.6

但是我编辑了这个文件:

sudo vi /etc/apt/sources.list.d/jonathonf-ubuntu-python-3_6-wily.list

然后我明智地改变为信任,然后:

sudo apt-get update
sudo apt-get install python3.6

12
Ubuntu 15.10?它已经停产了几个月。是时候升级了。
edwinksl


0

首先,按照其他一些答案安装Python 3.6或3.7。然后,如果要通过OpenEXR等安装PyPi软件包,pip可能会遇到一些错误。通过为新安装的Python安装Python开发包,可以解决其中的一些问题(例如,用于OpenEXR的PyPi包)。可以使用以下方法完成此操作:

sudo apt-get install python3.6-dev

要么

sudo apt-get install python3.7-dev


0

也许暗示康达并不是一个坏主意。我认为至少比使用pyenv更容易。但这也许确实取决于您打算使用Python做什么,因为我认为使用Conda可能会带来一些额外的程序包。

编辑:可能值得一提的是,在安装Conda的默认版本的Python之后,您可以安装所需的版本,在这里3.6,使用conda类似

conda install python==3.6
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.