如何使用apt-get安装其他Python版本?


125

如何使用apt-get安装其他版本的Python?

显然,我意识到我可以使用源代码tar球进行安装,但是我宁愿不要从源代码安装,而要使用软件包管理器,因为这就是它的用途。我可以参考的地方肯定可以为最新的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  


您是否曾经E: Couldn't find any package by regex 'python3.5'通过安装而因此无法安装apt-get install python3.5
查理·帕克


这里有一些好的建议:quora.com/…–
查理·帕克

1
@CharlieParker您是否尝试安装Anaconda
M. Becerra

Answers:


169

Felix Krull运行的PPA可以为https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa上的许多Ubuntu版本提供几乎任何版本的Python(严重的是,有2.3.7构建版本可用于生动...)。

照常做:

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

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

不要更改符号链接!显然,有许多系统功能无法与python3.5一起正常工作。

我尝试过此操作,之后无法打开终端,软件更新程序,...

cd /usr/bin
sudo rm python3

升级到Wily将使meta-package python3指向python3.5。我不希望有任何损坏,但是在这一点上,不再需要外部存储库。因此,为了安全起见,您可以在升级之前清除PPA。


5
因为菜鸟在那里,请不要符号链接!也没有符号链接只是意味着您需要在命令行中输入python3.5才能运行python 3.5
克里斯·霍克斯

4
您能指出我,我该如何使用3.4的点值和3.5?
Groosha '16

2
@ kondra007我遵循了pip.pypa.io/en/stable/installing的说明(请阅读警告),这两个命令wget https://bootstrap.pypa.io/get-pip.py; sudo python3.5 get-pip.py为我提供了适用于python 3.5的pip,但pip3.4不再起作用。如果有人知道更好,请发表评论
ndemou '16

2
还要将python3.5设置为默认值, ~$ vim ~/.bashrc并添加this alias python=python3.5。然后~$source ~/.bashrc
Krishnadas PC

1
提示:如果需要add-apt-repository: command not found,请运行 apt-get install software-properties-common python-software-properties以进行安装
Mithril

35

这个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

要检查是否已安装python,请输入python3.5else:

sudo ln -fs /opt/Python-3.5.0/Python /usr/bin/python3.5

3
OP表示他不想从源代码进行编译
Michael Bates

3
是的,你是对的。同样,从源代码进行编译可能会进一步引入一些依赖问题。但这就是我解决的方法。如果有更好的方法,我肯定会想知道。
joydeep bhattacharjee

5
考虑./configure --enable-optimizations stackoverflow.com/questions/41405728/…–
warvariuc

1
@CharlieParker,因为Python不是为特定的操作系统制作的。它可以在任何平台上运行。对于Linux,这意味着要么必须为每个Linux发行版(其中有很多)的每个版本编译和分发每个版本,要么它们分发源并让用户在将要使用的环境中自行编译它。用过的。后者更为可行。
CJStuart '17

2
您还需要从apt-get install build-essential
bato3 '17

13

只需执行以下步骤(已测试):

步骤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

步骤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

现在解压缩下载的软件包。

sudo tar xzf Python-3.5.2.tgz

第3步–编译Python源

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

cd Python-3.5.2
sudo ./configure
sudo make altinstall

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

步骤4 –检查Python版本

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

$ python3.5 -V

Python 3.5.2

来源


2
+1用于默认使用altinstall。在很多实际场景中,您只能使用一个版本。即使是默认使用Python3的系统,您也可能被迫反向安装Python-> Python2或添加Python2。
erm3nda

1
我收到了此处所述的错误-bugs.python.org/issue31652必须运行sudo apt-get install libffi-dev才能解决。
Nishan Chathuranga

我还将添加sudo apt-get install liblzma-dev以启用lzma支持。
v.grabovets

6

据我所知,至少在docker容器中,一个可以肯定是apt-getpython 3。

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

docker run -it --rm ubuntu:latest bash

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

apt-get update && apt-get install -y build-essential git libjpeg-dev

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

apt-get install python3
apt-get install python3-pip

并测试pip是否有效,可以下载一些东西:

pip3 install tensorflow

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

重要说明:似乎如果您已经安装了python 3.4,则apt-get install python3无法正常工作,因为它说您已经拥有python 3.4 。似乎这是我的问题之一,因为我是从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-泊坞窗


注意:您也可以只安装Anaconda。对于一个docker示例,可以做到:

docker pull continuumio/anaconda3
docker run -i -t continuumio/anaconda3 /bin/bash

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

这个解决方案安装了python 3.6,但是我敢肯定,如果您在那里查看它,可以得到python 3.5(如果您想要的话)。

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


1
“在Docker容器中”是一个非常笼统的语句:这完全取决于容器基于哪个映像,例如Ubuntu的哪个版本。此外,可能有3.5或3.6等次要版本在一个Ubuntu版本中不可用(例如14.04)
giorgiosironi

2

通过Ubuntu软件包中列出的apt-get可以安装许多较新的python发行

例如,以下版本当前可用:

python2.7

python3.2

python3.4

python3.5

python3.6

可用性随Ubuntu版本的不同而有所不同。例如,3.5可用于Xenial,Yakkety和Zesty,而3.6可用于Yakkety和Zesty,但是如果未启用通过apt-get获取它们,则必须启用Universe存储库。要检查您的Ubuntu版本的可用性,请查看上面的链接。

快速浏览一下,表明该答案仍然有效,因为即使对于Trusty,PPA的得分也为3.6。


Ubuntu Repo中可用的Python版本 不是最新的Python版本
yaitloutou

@yaitloutou这个问题说“较新”而不是“最新”。请随时编写一个更好的答案。
年长者怪胎

您是正确的,但是由于相对于未指定的而言较新,因此我将其解释为最新的:)
yaitloutou

@yaitloutou尽一切可能写一个更好的答案!我敢肯定,将不胜感激。
年长者怪胎

我刚刚开始在这里活跃起来,而且我还在学习。对不起,如果您发现我对您的回答的评论
令人反感

0

我会考虑使用虚拟环境,而不是通过apt-get安装python版本。

使用虚拟环境(请参阅此处) 是使用python开发的一种好习惯。它们使您可以将python环境与系统安装的python版本隔离开。

另外,在安装任何库(通过pip等)时不必获得sudo访问权限。


11
我认为您需要先安装所需的python版本,然后才能在虚拟环境中使用它。
恩布(Nzbuu)

1
在虚拟环境中安装所需版本的python,而不是通过在虚拟环境中运行“激活”脚本来更改与python相关的路径。
devrimbaris

这实际上正是我想要做的-在遵循@Nephente的回答之后,我尝试做的第一件事就是使用来指向它virtualenv -p。但是它显示为“ ImportError:无法导入名称'HTTPSHandler'”。
Michael Scheper

1
为什么这被否决?虚拟环境通常可以正常工作。
查理·帕克

如何在ubuntu中安装虚拟环境(如您的建议)但使用python 3.5?
查理·帕克

0

Conda正在积极更新,并允许您在托管的venvs中安装多个python版本,而无需您自己设置所有版本。二进制扩展路径问题可能已经在它使用的许多anaconda管理的依赖项/ pip链中得到了解决。

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.