错误:由于操作系统错误而无法安装软件包:[Errno 28] 设备上没有剩余空间

问题描述 投票:0回答:2

我使用以下命令在 Ubuntu 18 的 aws ec2 实例上安装软件包时遇到错误 -

pip install -e .

错误是-

ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device

我检查了什么?

  1. 使用
    free -h
    命令访问 RAM。
  2. 使用
    sudo ncdu -x
    命令查看磁盘利用率。
  3. 由于
    pip
    尝试下载到
    TMPDIR
    变量指定的默认位置,我还从该位置删除了文件。
  4. 我从 .cache 目录中删除了内容。
  5. 我从 /tmp 目录中删除了内容。

我仍然面临这个问题。

python python-3.x pip
2个回答
17
投票

https://github.com/pypa/pip/issues/5816#issuecomment-425410189提供的答案指出

pip 将文件下载到临时目录,环境变量 TMPDIR 指定该目录,pip 将文件放入缓存,因此 --cache-dir 规范, --no-cache-dir 也应该起作用。 --build 指定构建wheel的目录,因此它的规范也很有用。

对于我的用户,我在我的主目录中创建了一个名为

codebase/pip_cache/

 的自定义目录。

首先我尝试使用以下命令

--no-cache-dir

 -

TMPDIR=/home/deepakahire/codebase/pip_cache/ pip install -e . --no-cache-dir

。这不起作用。

最后,我还指定了

--cache-dir

,并使用以下命令来安装包 -

TMPDIR=/home/deepakahire/codebase/pip_cache/ pip install --cache-dir=/home/deepakahire/codebase/pip_cache/ -e .

这对我有用。

警告- 盲目删除

/tmp

 目录中的所有内容会删除您的 tmux 会话,但仍会使服务/实例在相同端口上保持活动状态,这些端口之前在任何 tmux 会话中已打开。


0
投票
我在 python 环境中的 AWS EC2 实例上遇到了此错误。

我注意到,当我在单独的终端中运行

watch -n 0.1 df -h /tmp

,然后在主终端中运行 
pip install torch
 命令时,Use% 变为 100%,这就是我收到 
OSError(28, 'No space left on device')
 错误的时候。 

当 /tmp 目录没有足够的空间用于下载压缩包并解压它们时,就会发生这种情况,因此您需要将 /tmp 目录设置为有足够空间的目录。

运行

df -h

 会显示哪些已安装的驱动器有足够的空间,因此您可以选择其中一个并在其中创建 tmp_pip 目录,然后运行如下命令:

mkdir /home/ec2-user/pip_cache export TMPDIR=/home/ec2-user/pip_cache pip install torch
最终对我有用,希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.