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.
Ce type d'erreur s'est produit dans deux cas
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.
Cette erreur peut se produire lorsque le système de fichiers est passé en mode lecture seule.
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")
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] #
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
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 /
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é.