pip安装 - 遇难

int*_*_32 7 python ubuntu pip

我正在尝试在Ubuntu服务器上安装pip包:

$ pip install MySQLdb
Downloading/unpacking MySQLdb
Killed
Run Code Online (Sandbox Code Playgroud)

它正在被杀死.服务器上有足够的可用RAM.为什么会被杀?

UPD日志:

记忆力不足:杀死过程6627(点子)得分297或牺牲孩子

多奇怪,因为我有大约150 MB的空闲内存.

fer*_*rum 9

就我而言,使用清理 pip 缓存pip3 cache purge是解决方案,但要小心:它会删除整个 pip 缓存。

我在空闲状态下有足够的可用 RAM (~3Gb),但火炬的安装一次又一次被终止,即使没有显示下载进度:

Collecting torch>=1.5.0
Killed
Run Code Online (Sandbox Code Playgroud)

所以我想,就像 @embiem 猜测的那样,我在缓存中损坏了文件,因为我曾经中止了模块依赖项的安装。清除整个 pip 缓存后,安装成功(并且释放了 15GB 可用磁盘空间 - 我使用了很多虚拟环境)。您可以使用pip3 cache info所有缓存管理命令检查简要信息pip3 cache -h,这在某些情况下非常有用。


小智 7

如果您的内存不足,可以尝试 pip install package --no-cache-dir

  • 我很震惊这有助于降低 RAM,但它有帮助 (13认同)
  • 这解决了我在 vps 服务器上的tensorflow问题 (4认同)
  • 谢谢,这对我有用!我在之前的安装尝试中耗尽了内存,然后腾出了更多空间,随后的安装尝试只是打印“Killed”。我猜它是从缓存中读取损坏的文件? (2认同)
  • 解决方案已确认(也适用于tensorflow和mysql),@artem应该将其检查为正确答案 (2认同)
  • 也适用于 opencv-python。 (2认同)

小智 6

步骤1:

pip install package --no-cache-dir 如果问题仍然存在,请转到步骤 2。

第2步:

sudo swapoff -a

sudo swapon -a

然后再次尝试步骤 1。


Aif*_*Aif 5

您必须检查日志,具体取决于ubuntu和东西的版本,它应该在/var/log/messages或至少在,/var/log所以你可以grep python或pip在该文件夹中.这应该提供提示.

此外,如果您不在virtualenv中,则应该使用sudo执行(隐式)特权操作,例如复制全局lib文件夹中的库.

  • 在virtualenv中使用sudo听起来像你的设置有严重的错误.你确定`pip`来自你的virtualenv? (4认同)

Nav*_*han 5

如果--no-cache-dir标志不够,请尝试增加交换空间。

我试图在具有 2GB RAM 和 512 交换空间的 Linode 服务器上安装 PyTorch。添加 2GB 的交换空间解决了这个问题。

方法#3:创建一个交换文件。

  1. 在当前文件系统上创建一个交换文件,例如在 root 上,为此可以创建一个新目录。$ sudo mkdir /swap
  2. 在这个新目录中创建一个新文件,在本例中创建了一个 2Gb 的新文件。$ sudo dd if=/dev/zero of=/swap/swapfile1 bs=1M count=2048
  3. 在已创建的文件上创建一个新的交换区。$ sudo mkswap /swap/swapfile1
  4. 更改文件的权限。$ sudo chmod 600 /swap/swapfile1
  5. 将交换分区添加到 /etc/fstab 文件中,如下所示: /swap/swapfile1 swap swap defaults 0 0
  6. 加载为实例创建的新交换空间。$ sudo swapon -a

指南来源:TheGeekDiary