python 无法安装软件包,因为出现EnvironmentError:[错误28]设备上没有剩余空间

ijxebb2r  于 12个月前  发布在  Python
关注(0)|答案(8)|浏览(182)

我想安装

python -m spacy download en_vectors_web_lg

但它抛出了错误:

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

我能知道为什么它会产生错误吗?它是说我没有足够的空间在目录中安装??

hxzsmxv2

hxzsmxv21#

它很可能正在尝试将数据下载到您的/tmp临时位置。我的猜测是默认设置(通常是你的一半RAM)太小,无法处理下载。
您可以使用以下命令禁用tmp装载:systemctl mask tmp.mount.在做这件事之前要小心,做好你的研究。
或者,您可以通过执行以下export TMPDIR='/var/tmp'操作将TMPDIR目录设置为/var/tmp

qgzx9mmu

qgzx9mmu2#

我不得不做一个system prune来腾出更多的空间。
docker system prune
请注意,这将“删除所有未使用的容器、网络、映像(包括悬空的和未引用的),以及可选的卷”。

k10s72fa

k10s72fa3#

正如这里提到的,你可以创建一个有足够空间的目录,比如/folder/address/here/,然后运行下面的命令来安装它:

TMPDIR=/folder/address/here/ pip install --cache-dir=$TMPDIR --build $TMPDIR package-name

由于我自己的案例是升级tensorflow,我运行了以下命令:

TMPDIR=/folder/address/here/ pip install --upgrade --cache-dir=$TMPDIR --build $TMPDIR tensorflow
vwhgwdsa

vwhgwdsa4#

如果你正在使用一个docker容器,我建议你弄清楚为什么你的docker是满的,然后清空任何占用空间的东西。
要弄清楚是什么占用了空间运行:
docker system df
运行后:
docker <container/image/builder> prune --all
来清理占地方的东西

46qrfjad

46qrfjad5#

如果你使用的是Ubuntu,你也可以试试

sudo apt-get clean

这将清除您的包缓存。在此之后,尝试安装软件包(为我工作)。

5lwkijsr

5lwkijsr6#

上述方法在我的Linux Ubuntu计算机上不起作用。
最终成功的解决方案是:
1.重新启动计算机
1.将/tmp重命名为old.tmp并创建新的/tmp文件夹。这个想法来自这个post,命令如下:
mv/tmp/old.tmp mkdir /tmp chmod 1777 /tmp
我想问题是/tmp文件夹中的文件太多了。
请注意,当重新启动/tmp文件夹中有太多文件的计算机时,计算机可能会卡住。要解决这个问题,this post很有用。简单地说,编辑reboot选项并将'ro...'更改为'rw init=/bin/bash',这样在重新启动时您将很快看到一个bash终端。

zynd9foi

zynd9foi7#

对于那些在命令行和使用Windows或MacOS时感到紧张的人,请启动Docker Desktop。看看Images。这将显示所有图像的列表,包括它们的状态。状态Unused (dangling)可能是您想要摆脱的所有状态。只需选择并删除即可。
我为什么要推荐GUI方法?因为docker prune“删除所有未使用的容器、网络、映像(包括悬空的和未引用的),以及可选的卷。”当你是新手的时候。例如,Unused意味着Not Currently In Use At the Moment,而 * 不是 * no longer usefulnot ever going to be used again,这是您在开始使用Docker时可能期望的。

inkz8wg9

inkz8wg98#

正如Albert Lee所说,这可能是因为您的/tmp目录大小不够(应该是您的dram大小的一半),或者他的解决方案,您可以通过重新挂载来扩大/tmp目录的大小:

sudo mount -o remount,size=16G /tmp/

相关问题