在Ubuntu系统上更新Python


78

我想更新Linux机器上的Python构建,但是我知道如何做的唯一方法是卸载当前版本并安装新版本。我的系统已经是最新的(我昨天更新了)。我想知道是否可以通过命令行更新特定程序,例如sudo apt-get update <program-name>。我知道此命令不存在,但我希望有等效的命令。


如果您的系统是最新的,那么系统上的Python也是如此(根据存储库)。我错了吗?
cYrus

Answers:


64

正如其他人已经指出的那样,裸机sudo apt-get install package将安装最新的可用版本,并在需要时替换较旧的版本。

但是对于某些软件(在Python中),情况有所不同。一些主要的,非常不兼容且不兼容的版本会获得自己的软件包。例如,Python 2.6Python 2.7Python 3.1都生活在Ubuntu上的单独软件包中。

尤为重要的是,Ubuntu策略之一就是广泛使用Python编写最终用户软件。因此,实际上,系统的很大一部分用Python编写的。目前,该代码在Python 2.6上运行-因此该版本是安装时的默认版本;而且该代码也不会轻易在Python 2.7上运行-因为存在不兼容性。要将系统切换到Python 2.7,需要完成一些工作,包括更新和重新测试所有脚本。这不容易做到;也就是说,您不能仅将系统“切换”到Python 2.7并删除旧版本。

但。如果您不关心系统的花哨功能,而只需要更新的Python,那就没有障碍。去sudo apt-get install python3和3.x的Python的勇敢代码; 只要记住要python3使用#!/usr/bin/env python3shebang行启动脚本并使用。


6
有关幕后工作的详细信息。
efficiencyIsBliss

16
sudo apt-get install python 3.3.3

这是针对python(3.3.3)的不同版本,应使用相应的版本号。


4
我认为python和version之间的空间不应该存在。sudo apt-get install python3.6为我工作,但不会以任何方式影响Python 3.5。
GUI Junkie 2013年

sudo apt-get install python 3.6.1 > Note, selecting 'libghc-unix-time-dev-0.3.6-1b8cf' for regex '3.6.1' ... 分立的参数告诉我们要安装多个软件包
Clancy Hood

3
安装后我的python版本号是一样的吗?可能是什么原因?
Ramesh Pareek

我使用了这种方法,但是找不到它的安装位置(即如何打开3.7 Shell)。@RameshPareek这也可能是您的问题。似乎不在/ usr / bin中。python is already the newest version (2.7.12-1~16.04). python set to manually installed.有任何想法吗?
约克一号球迷

10
sudo apt-get install python3.6

这会将python 3与python 2一起安装在linux中。要访问python 3,请在打开终端后输入。

python3

2
这将重复另一个答案,并且不会添加任何新内容。除非您确实有新贡献,否则请不要发布答案。
DavidPostill

3
抱歉,我只是想编写命令以获取新命令。
G-Ox7cd

6
如果我跑步,我会得到E: Unable to locate package python3.6 E: Couldn't find any package by glob 'python3.6' E: Couldn't find any package by regex 'python3.6'
Kajsa

1
sudo add-apt-repository ppa:deadsnakes / ppa -y && sudo apt-get更新
ski_squaw

E: Unable to locate package python3.6
变暗

4

您已经想到了类似的命令sudo apt-get update(这是一个实际的命令,但没有执行您想要的命令。)

要升级Python以及您已安装的所有其他产品,只需执行以下命令:

sudo apt-get upgrade

谢谢,但是我已经知道了update命令,这就是为什么我发布我的系统已经是最新的事实的原因。我希望找到一个可以针对特定应用程序的命令。
efficiencyIsBliss

apt不会升级任何最新信息,因此不会有所不同; p
Journeyman Geek

OP希望专门更新python 。告诉他们更新他们拥有的所有软件包是一个懒惰和糟糕的建议。
Przemek D



2

pyenv可能是您的一个不错的选择:https : //github.com/yyuu/pyenv


关于@ulidtko的答案,完全替代系统python的一种可能替代方法可能是使用具有所需python版本的隔离环境。这类似于“虚拟环境”,但适用于python本身。过去,我曾在运行于python 2.6的旧版项目以及从python的旧版升级到python3时使用过它。


我对该领域不熟悉,但是您能解释一下如何解决该问题并解决该问题吗?
本N

1
关于@ulidtko的答案(superuser.com/a/241903/152143),完全替代系统python的一种可能替代方法可能是使用具有所需python版本的隔离环境。这类似于“虚拟环境”,但适用于python本身。过去,我曾在运行于python 2.6的旧版项目以及从python的旧版升级到python3时使用过它。
nicefinly

1
apt-get install python

我相信这应该可行。很明显,您将需要更改“ python”以匹配适当的软件包名称。


1

众所周知,Python带有3.5版本。因此,将Python 2.7(默认情况下存在于Ubuntu 16.04中)更新为Python 3.5非常简单。

请按照以下步骤操作:

  1. 打开终端。
  2. 通过使用sudo命令成为root用户。
  3. 使用下面的代码将Python 2.7更新到3.5

    须藤apt-get install python3.5

  4. 系统将要求您提供许可,然后选择“给选项Y”。

  5. 等待直到完成该过程。
  6. 使用命令清除屏幕 clear
  7. 通过以下命令检查python版本。

    python-版本


1
以后请使用正确的格式,并避免使用“希望这对您有所帮助”之类的陈述。他们只是噪音。通过回答该问题,可以认为是您尝试用有帮助的方式回答问题。您应该仔细阅读答案,并修复我没有解决的轻微语法错误,并提供该过程的屏幕截图。这次我为您修复了格式,我不再赘述,我坚信作者应该坚持自己的答案和问题。
Ramhound

它不是那么简单,它不能正确更新符号链接,因此最终并排出现3.4和3.5。无论如何,Python2通常与python3并排,我们不将Python2升级到Python3,而是迁移工作。
mckenzm

0

在运行LTS版本的单一情况下,您的python可能落后于次要版本,例如2.7.5,而不是2.7.10。

一种可能是升级系统

  • 设置prompt=normal/etc/update-manager/release-upgrades
  • 升级系统
    • 在命令行上,您可以键入sudo do-release-upgrade以使升级管理器执行其工作以升级到最新(= non-LTS)版本。
    • GUI解决方案使用更新管理器

与往常一样,在升级时,请查看发行说明,因为在某些情况下升级可能会破坏系统,请参阅@Gino的注释


杜德,我尝试了您的更改,但它破坏了我的Ubuntu 14.04系统!基本上,它尝试从14.04更新到Ubuntu 15,但未能成功完成,使我的系统处于图形登录不再起作用的中途状态-例如,我将通过图形登录登录并启动我回到相同的图形登录。过去一个多小时花了+在我的机器上重新安装Ubuntu 14.04,以解决打破您声称的解决方案的问题
吉诺2015年

@吉诺:谢谢您的反馈。你有没有看askubuntu.com/questions/612973/...askubuntu.com/questions/223501/...和发行说明?“ AMD的fglrx驱动程序”存在问题。您还需要其他帮助吗?
serv-inc

我认为您的建议绕过正常的安全检查,从而允许升级到非LTS版本充满了危险。到目前为止,我不知道为什么升级失败,因为它没有显示任何可诊断的错误消息。相反,我最终得到了一个不再可用的系统。如果我没记错的话,我最终使用某些设置来重新运行Ubuntu安装,这些设置能够还原我的大多数系统。另外,我是一个专业的程序员,所以我通常对Linux系统有所了解。
吉诺(Gino)

@Gino:这似乎是从LTS切换到非LTS的标准过程。它“ [更改]新版本的知名度。可以将其设置为“受支持”(常规)发行版,“仅长期”(LTS)发行版,甚至“什么都没有”(没有重大升级)。”'有关报价,请参见askubuntu.com/questions/240160/…。它使用系统的升级管理器,不幸的是,在您的情况下,(默认)升级无法正常工作,这可能是由于图形驱动程序有问题(请参见上面的链接)
serv-inc
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.