web-dev-qa-db-fra.com

Aucun répertoire temporaire utilisable trouvé

J'essaie de trouver un répertoire temporaire, mais quand j'essaye d'obtenir le répertoire en utilisant

tempfile.gettempdir()

ça me donne une erreur de

 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']

L'autorisation sur le répertoire est 777 détenue par root.

43
OpenCurious

Ce type d'erreur s'est produit dans deux cas

  1. permission (doit être drwxrwxrwt et doit à la racine)
  2. space

Pour vérifier l'espace (utilisation du disque) il suffit d'exécuter la commande sur le terminal

df -h

Répertorie l'utilisation du disque sous unix et obtient la sortie comme

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5        28G   15G   12G  58% /

Si l'utilisation root (montée sur /) est de 100%.

Vous devez nettoyer le répertoire tmp ou redémarrer la machine ou libérer de l'espace à la racine.

63
Atul Arvind

Cette erreur peut se produire lorsque le système de fichiers est passé en mode lecture seule.

10
Chris Mutel

J'ai eu le même problème lors de l'exécution d'un script python dans Docker. La commande suivante l'a corrigé pour moi:

docker rmi $(docker images --quiet --filter "dangling=true")
5
Roozbeh Zabihollahi

J'ai eu le même problème quand il n'y avait pas d'espace sur /.

Problème:

Fichier "/usr/lib64/python2.6/tempfile.py", ligne 201, dans _get_default_tempdir ("Aucun répertoire temporaire utilisable trouvé dans% s"% dirlist)) 
 IOError: [Errno 2] Aucun temporaire utilisable répertoire trouvé dans ['/ tmp', '/ var/tmp', '/ usr/tmp', '/'] [FAILED] 

[root @ master hue] # df -h

Taille du système de fichiers utilisée Utilisation disponible% monté

/ 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%/démarrage

Quand j'ai dégagé de l'espace, cela a bien fonctionné pour moi.

[root @ master log] # service hue start

Teinte de départ: [OK]

[root @ master log] #

2
Ajit K'sagar

Un problème peut également se produire si inode est plein.

Vous pouvez taper 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
0
Yuukoo

définitivement un problème d'espace disque,

sur le terminal, tapez df -h vous devriez voir la sortie comme ci-dessous (remarquez le 100% sur l'un des systèmes de fichiers)

$ 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

dans ce cas, vous devez faire de la place en supprimant les fichiers, les dossiers d'artefacts e.t.c sur le chemin racine /

0
Edwin Ikechukwu

J'ai eu le même problème sur la machine Windows 7x64. C'était OK avec l'espace disque et les autorisations.

Quand j'ai exécuté

tempfile.mkdtemp(prefix='MyPrefix_')

manuellement dans python console le répertoire %TEMP%\MyPrefix_xxxx a été créé avec succès. Mais quand j'ai fait la même chose à partir du script, j'ai reçu l'erreur IOError: [Errno 2] No usable temporary directory found in [...].

J'ai résolu le problème en utilisant le paramètre dir:

 # '.' is a default value for example
 tempfile.mkdtemp(prefix='MyPrefix_', dir=os.environ.get('TEMP', '.')) 

Après cela, le script a bien fonctionné.

0
and1er