我正在尝试在Ubuntu服务器上安装pip包:
$ pip install MySQLdb
Downloading/unpacking MySQLdb
Killed
Run Code Online (Sandbox Code Playgroud)
它正在被杀死.服务器上有足够的可用RAM.为什么会被杀?
UPD日志:
记忆力不足:杀死过程6627(点子)得分297或牺牲孩子
多奇怪,因为我有大约150 MB的空闲内存.
就我而言,使用清理 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
小智 6
pip install package --no-cache-dir
如果问题仍然存在,请转到步骤 2。
sudo swapoff -a
sudo swapon -a
然后再次尝试步骤 1。
您必须检查日志,具体取决于ubuntu和东西的版本,它应该在/var/log/messages或至少在,/var/log所以你可以grep python或pip在该文件夹中.这应该提供提示.
此外,如果您不在virtualenv中,则应该使用sudo执行(隐式)特权操作,例如复制全局lib文件夹中的库.
如果--no-cache-dir标志不够,请尝试增加交换空间。
我试图在具有 2GB RAM 和 512 交换空间的 Linode 服务器上安装 PyTorch。添加 2GB 的交换空间解决了这个问题。
方法#3:创建一个交换文件。
- 在当前文件系统上创建一个交换文件,例如在 root 上,为此可以创建一个新目录。$ sudo mkdir /swap
- 在这个新目录中创建一个新文件,在本例中创建了一个 2Gb 的新文件。$ sudo dd if=/dev/zero of=/swap/swapfile1 bs=1M count=2048
- 在已创建的文件上创建一个新的交换区。$ sudo mkswap /swap/swapfile1
- 更改文件的权限。$ sudo chmod 600 /swap/swapfile1
- 将交换分区添加到 /etc/fstab 文件中,如下所示: /swap/swapfile1 swap swap defaults 0 0
- 加载为实例创建的新交换空间。$ sudo swapon -a
指南来源:TheGeekDiary