[baobab] "[...] OSError: [Errno 28] No space left on device"

Dear HPC,

I am getting the following error when trying to install pip packages from a pyproject.toml file:

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

The anaconda environment is

/home/users/s/shekhza2/.conda/envs/ant-migrate-dev

the command I used is

pip install -e ."[dev]"

and the pyproject.toml file is here:

/home/users/s/shekhza2/ant-migrate/git_repo/benchmarking

Locally, the installation works, so it seems an issue with the HPC.

– Imahn

Dear @Imahn.Shekhzadeh1

When you ask for help: please use the category “HPC issues” on hpc-community. Doing so, you’ll use the correct template and we’ll have more information. I’ve moved your post to the correct category but I’m still missing the information on which cluster you are having the issue.

Do you have the issue on Baobab and Yggdrasil?

Best

Ok, good to know for next time, the cluster is baobab.

The issue is that /tmp on login2.baobab is too small. You need to create and use an alternative directory for such task.

(ant-migrate-dev) (baobab)-[shekhza2@login2 benchmarking]$ mkdir $HOME/tmp
(ant-migrate-dev) (baobab)-[shekhza2@login2 benchmarking]$ TMPDIR=$HOME/tmp pip install -e ."[dev]"

ps: I did this in your environment and it worked, thus the installation should be done, no need to redo.

Thanks! Is it possible to somehow configure pip (e.g. in the .bashrc file) to automatically use TMPDIR, so that infuture installations, I won’t have to think about it?

– Imahn

PS: I also noticed that when using TMPDIR, I get the following warning, but I guess that adding TMPDIR results in a user installation:

Defaulting to user installation because normal site-packages is not writeable

In fact, pip is already using TMPDIR if present. You just need to set it (in your .bashrc export TMPDIR=XXX

We’ll probably increase the tmp size during the next maintenance anyway and this workaround won’t be strictly necessary anymore.

The same message was present as well without this variable set, you probably just missed it. You can use pip install --user to force it to do the installation in user directory.

1 Like