Нет доступной временной директории
Я пытаюсь найти временную директорию,
но когда я пытаюсь получить каталог с помощью
tempfile.gettempdir()
это дает мне ошибку
File "/usr/lib/python2.6/tempfile.py", line 254, in gettempdir
tempdir = _get_default_tempdir()
File "/usr/lib/python2.6/tempfile.py", line 201, in _get_default_tempdir
("No usable temporary directory found in %s" % dirlist))
IOError: [Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/home/openerp/openerp-server']
Разрешение в каталоге 777 принадлежит root.
Ответы
Ответ 1
Такая ошибка произошла в двух случаях
- (должно быть drwxrwxrwt и должно быть выполнено root)
- space
Чтобы проверить пространство (использование диска), просто запустите команду на терминале
df -h
Перечислит использование диска в unix и получит результат, например
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 28G 15G 12G 58% /
Если использование корня (установленное на /) составляет 100%.
Вам нужно очистить каталог tmp или перезагрузить компьютер или сделать некоторое пространство в корне.
Ответ 2
Эта ошибка может возникнуть, если файловая система была переключена в режим только для чтения.
Ответ 3
У меня была такая же проблема при запуске скрипта Python в Docker. Следующая команда исправила это для меня:
docker rmi $(docker images --quiet --filter "dangling=true")
Ответ 4
У меня такая же проблема, когда в/не было места.
Проблема:
File "/usr/lib64/python2.6/tempfile.py", line 201, in _get_default_tempdir("No usable temporary directory found in %s" % dirlist))
IOError: [Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/'] [FAILED]
[root @master hue] # df -h
Размер файловой системы Используется Использовать% Установлено на
/DEV/Mapper/vg_master-lv_root
35G 34G 0 100% /
TMPFS
7.8G 72K 7.8G 1%/dev/shm
/DEV/sda1
477M 34M 418M 8%/boot
Когда я очистил какое-то пространство, это сработало для меня.
[root @master log] # начало обслуживания
Начальный оттенок: [OK]
[root @master log] #
Ответ 5
Проблема также может возникнуть, если inode заполнены.
Вы можете ввести df -i
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 253841 322 253519 1% /dev
tmpfs 255838 430 255408 1% /run
/dev/xvda1 5120000 5120000 0 100% /
tmpfs 255838 1 255837 1% /dev/shm
tmpfs 255838 7 255831 1% /run/lock
tmpfs 255838 16 255822 1% /sys/fs/cgroup
tmpfs 255838 4 255834 1% /run/user/1000
Ответ 6
Определенно проблема с дисковым пространством,
на терминале, введите df -h
вы должны увидеть вывод, как показано ниже (обратите внимание на 100% на одну из файловых систем)
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 992M 0 992M 0% /dev
tmpfs 200M 21M 179M 11% /run
/dev/xvda1 7.8G 7.8G 0 100% /
tmpfs 1000M 0 1000M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
tmpfs 200M 0 200M 0% /run/user/997
tmpfs 200M 0 200M 0% /run/user/1042
в этом случае вам нужно сделать пробел, удалив файлы, папки артефактов e.t.c в корневом каталоге root /
Ответ 7
У меня была такая же проблема на компьютере с Windows 7x64. Все было в порядке с дисковым пространством и разрешениями.
Когда я извинился
tempfile.mkdtemp(prefix='MyPrefix_')
вручную в консоли python каталог %TEMP%\MyPrefix_xxxx
был успешно создан.
Но когда я сделал то же самое из сценария, я получил ошибку IOError: [Errno 2] No usable temporary directory found in [...]
.
Я решил проблему с помощью параметра dir
:
# '.' is a default value for example
tempfile.mkdtemp(prefix='MyPrefix_', dir=os.environ.get('TEMP', '.'))
После этого из скрипта все заработало.
Ответ 8
Я столкнулся с этим вопросом ранее сегодня. Я запустил запрос, встроенный в jupyter, перед тем, как пойти на обед, и вернулся к jupyter, выдавая какой-то тип ошибки (не могу вспомнить, что именно было). Когда я попытался перезапустить jupyter в терминале, я получил сообщение об ошибке, описанное в вопросе OP (нет доступного временного каталога). Приведенные выше ответы не сработали, поэтому я попытался перезапустить всю ВМ, после чего я получил ошибку, описанную здесь. После следования инструкциям в ответе этой темы проблема была решена.