2011-03-03 50 views
118

我正在运行Ubuntu 9:10,并且安装了一个名为M2Crypto的软件包(版本为0.19.1)。我需要下载,构建并安装最新版本的M2Crypto软件包(0.20.2)。如何更新Python包?

0.19.1包在许多位置包含文件,包括(/ usr/share/pyshared和/usr/lib/pymodules.python2.6)。

如何在安装0.20.2之前从我的系统中完全卸载0.19.1版本?

回答

30

您可能想要查看一个Python包管理器,如pip。如果你不想使用Python软件包管理器,你应该可以下载M2Crypto并通过旧版本安装/编译/安装。

+0

谢谢。你说什么工作。我构建并安装了0.20.2,无需卸载0.19.1。 – thompson 2011-03-03 16:50:10

4

最初安装的包是怎么样的?如果是通过apt,你可以只能够做apt-get remove python-m2crypto

如果通过的easy_install安装了它,我敢肯定,唯一的办法是只垃圾lib下的文件,共享文件等。

我的未来建议?使用类似pip的东西来安装你的软件包。此外,您可以查找virtualenv之类的东西,以便您的软件包以每个环境为基础存储,而不仅仅存储在根目录中。

画中画,这是很容易:

pip install m2crypto 

但你也可以从混帐,SVN等回购与正确的地址安装。这是在pip documentation

+0

他描述安装文件的方式表明软件包是使用apt软件包管理器安装的 - 因为(在Debian AFAIK上)apt会在他列出的2个位置安装python软件包 -/share/pyshared/..用于共享代码跨版本和/ usr/lib/..版本特定部分。另一方面,易于安装/点将使用/ usr/local/lib/.. - 正如你所说 - 只是apt-get删除会做他。 – 2011-12-11 02:25:20

265

所有解释,我发现最好的办法是从终端

sudo pip install [package_name] --upgrade 

sudo运行此命令会要求输入根口令来确认操作。

+2

如果你使用的是没有认证的代理:sudo pip install [package] --upgrade --proxy = address:port – lmsasu 2017-01-18 12:20:14

+10

我来这里是为了这个答案。我尝试过'pip update'和'pip upgrade',并且绝望,直到我在这里看到'--upgrade'。为什么他们不添加“点子升级”命令? – 2017-05-23 13:18:02

+3

这确实是一个很好的隐藏功能。 – otocan 2017-07-13 10:40:12

15
  1. 通过windows命令提示符运行:pip list --outdated 您将看到过时的软件包列表。
  2. 运行:pip install [package] --upgrade 它会升级[package]并卸载以前的版本。
27

自动升级所有过时的包(即使用PIP已安装),只需运行该脚本波纹管,

pip install $(pip list --outdated | awk '{ print $1 }') --upgrade 

这里,pip list --outdated将列出所有过时的包,然后我们把它管awk,所以它只会打印名称。 然后,$(...)将使其成为一个变量,然后,一切都自动完成。确保你有权限。(只要把sudo点子之前,如果你困惑) 我会写一个名为脚本,pip-upgrade 的代码波纹管,

#!/bin/bash 
sudo pip install $(pip list --outdated | awk '{ print $1 }') --upgrade 

然后使用脚本的以下行做准备:

sudo chmod +x pip-upgrade 
sudo cp pip-upgrade /usr/bin/ 

然后,只需打pip-upgrade,瞧!

+0

我得到了一个语法错误,指向最后一个括号:awk:cmd。 1:{print $ 1})' – 2017-12-03 23:08:53

+2

@TT较新版本的'pip'要求您使用'--format = legacy'选项,即'pip list --outdated --format = legacy'。另外FYI大家:在许多Linux发行版中盲目更新所有模块通过点可能是相当危险的。他们中的许多人通过发行版软件包提供了特定的python模块,如果你更新狗屎,某些发行版(特别是RHEL)可能会崩溃...更不用说,如果你通过pip更新,发行版软件包可能会恢复您的更改未来的更新。 – rsaw 2017-12-04 15:49:43

2

获取所有的过时的包和创建具有以下 命令 一个批处理文件PIP安装XXX --upgrade每个过时的包

4

我认为最好的一个班轮是:

pip install --upgrade <package>==<version> 
2

方法1:手动一个升级由一个

PIP安装程序包-U

方法2:U一次全部升级(如果某些软件包未能升级,则可能导致高回滚)

pip install $(pip list --outdated --format = columns | tail -n +3 | cut -d“”-f1)--upgrade

方法3:在利用$循环

对于i升级逐个(PIP列表--outdated --format =列|尾-n 3 |切-d”“-f1);做pip安装$ i --upgrade;完成