如何更新Python包?


234

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

0.19.1软件包的文件位于多个位置,包括(/ usr / share / pyshared和/usr/lib/pymodules.python2.6)。

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

Answers:


54

您可能需要研究像pip这样的Python软件包管理器。如果您不想使用Python软件包管理器,则应该能够下载M2Crypto并通过旧安装进行构建/编译/安装。


1
谢谢。你说的有效。我无需卸载0.19.1即可构建并安装0.20.2。
汤普森

461

我发现最好的方法是从终端运行此命令

sudo pip install [package_name] --upgrade

sudo 会要求输入您的root密码以确认操作。


注意:某些用户可能安装了pip3。在这种情况下,请使用

sudo pip3 install [package_name] --upgrade

4
如果您使用的是未经身份验证的代理:sudo pip install [package] --upgrade --proxy = address:port
lmsasu

32
我来这里是为了这个答案。我尝试了pip update并且pip upgrade绝望地直到我看到--upgrade这里。他们为什么不添加pip upgrade命令?
拉尔斯·布伦伯格

9
这确实是一个隐藏的功能。
otocan '17

1
对于Windows用户:sudo不是必需的。
Stevoisiak

2
这应该是答案1
Cord Kaldemeyer

48

要自动升级所有过时的软件包(已使用pip安装),只需运行以下脚本,

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

在这里,pip list --outdated将列出所有过期的软件包,然后将其通过管道传输到awk,因此它将仅打印名称。然后,$(...)将其设为变量,然后自动完成所有操作。确保您具有权限。(sudo如果您感到困惑,请放在pip前面)我会写一个脚本,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,瞧!


我的语法错误指向以下位置的最后一个括号:awk: cmd. line:1: { print $1 })
TT

7
@TT的较新版本pip要求您使用该--format=legacy选项,即pip list --outdated --format=legacy。供大家参考:在许多Linux发行版上,通过pip盲目更新所有模块可能非常危险。他们中的许多人通过发行包提供特定的python模块,其中一些发行版(特别是RHEL)在更新狗屎时可能会崩溃……更不用说如果您通过pip更新,发行包可能会将您的更改还原将来的更新。
rsaw

谢谢@rsaw。他说的对,您应该使用--user选项运行pip命令
Fahim Ferdous

1
我喜欢这个答案,尽管我了解自动更新所有内容的危险。无论如何,由于pip 19.0中不推荐使用legacy,因此pip install $(pip list --outdated --format = columns | grep -v“ Package” | grep -v ------ | awk'{print $ 1}')- -upgrade
麦克v

2
为了在Ubuntu 18.04 venv上工作,请进行以下修改:pip install $(pip list --outdated | tail +3 | grep -v sdist | awk '{ print $1 }') --upgrade
Alexander Remesch

34
  1. 通过Windows命令提示符,运行:pip list --outdated 您将获得过期软件包的列表。
  2. 运行:pip install [package] --upgrade 它将升级[package]并卸载以前的版本。

要更新点:

py -m pip install --upgrade pip

同样,这将卸载以前版本的pip,并将安装最新版本的pip。


29
  • 方法1:手动手动升级

pip install package_name -U
  • 方法2:一次全部升级(如果某些程序包无法升级,则很有可能会回滚

pip install $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1) --upgrade
  • 方法3:使用循环一一升级

for i in  $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1); do pip install $i --upgrade; done


9

使用pipupgrade

$ pip install pipupgrade
$ pipupgrade --latest --interactive

pipupgrade可帮助您从requirements.txt文件升级系统,本地或软件包!它还有选择地升级不会破坏更改的软件包。与Python2.7 +,Python3.4 +和pip9 +,pip10 +,pip18 +兼容。

在此处输入图片说明

注意:我是该工具的作者。


1
每当我使用此工具时,都会收到响应“ [0; 93mChecking ... [0m]”,并且它什么也不做。我使用不正确吗?
紫罗兰色

我在MacPorts上使用Mac。与Python 3.7 pipupgrade只工作了5 50的程序包,其余的我不得不使用这样的:因为我在pip3.7 list --outdated | sed -n -e '3,$s/ .*//p'; 做pip3.7 install --upgrade $ i; 完成
Michael Dreher

4

该软件包最初是如何安装的?如果是通过apt进行的话,您就可以apt-get remove python-m2crypto

如果您是通过easy_install安装的,我敢肯定,唯一的方法就是将文件丢弃在lib,shared等目录下。

我将来的推荐?使用pip之类的工具安装软件包。此外,您可以查找一个称为virtualenv的东西,以便您的软件包是基于每个环境存储的,而不是仅基于root存储的。

使用pip,非常简单:

pip install m2crypto

但是您也可以使用正确的地址从git,svn等仓库中安装。所有这些都在pip文档中进行了说明


他描述文件安装位置的方式表明该软件包是使用apt软件包管理器安装的-因为(在Debian AFAIK上)apt会在他列出的2个位置(/ share / pyshared / ..)下安装python软件包,用于共享代码。跨版本和/ usr / lib / ..了解特定于版本的部分。另一方面,easy-install / pip将使用/ usr / local / lib / ..-正如您所说的-只要apt-get remove就能完成。
巴塞尔Shishani


3

在Juptyer笔记本中,一种非常简单的方法是

!pip install <package_name> --upgrade

因此,您只需要替换为实际的软件包名称即可。


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.