一時ディレクトリを見つけようとしていますが、ディレクトリを取得しようとすると
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']
ディレクトリーの許可は、rootが所有する777です。
この種のエラーは2つのケースで発生しました
スペース(ディスク使用量)を確認するには、ターミナルでコマンドを実行するだけです
df -h
UNIXのディスク使用量をリストし、次のような出力を取得します
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 28G 15G 12G 58% /
ルート(/にマウント)の使用率が100%の場合。
Tmpディレクトリを削除するか、マシンを再起動するか、ルートにスペースを確保する必要があります。
このエラーは、ファイルシステムが読み取り専用モードに切り替えられたときに発生する可能性があります。
Dockerでpythonスクリプトを実行しているときに同じ問題が発生しました。次のコマンドで修正されました。
docker rmi $(docker images --quiet --filter "dangling=true")
/にスペースがないときに同じ問題が発生しました。
問題:
ファイル「/usr/lib64/python2.6/tempfile.py」、201行目、_get_default_tempdir( "%sに使用可能な一時ディレクトリが見つかりません"%dirlist)) IOError:[Errno 2]使用可能な一時ファイルはありません['/ tmp'、 '/ var/tmp'、 '/ usr/tmp'、 '/'で見つかったディレクトリ[失敗]
[root @ master hue]#df -h
使用されるファイルシステムサイズAvail Use%Mounted on
/ 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]#service hue start
開始色相:[OK]
[root @ masterログ]#
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
間違いなくディスク容量の問題、
端末でdf -h
と入力すると、次のような出力が表示されます(ファイルシステムの1つで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
この場合、パスルート/
上のファイル、アーティファクトフォルダーなどを削除して、スペースを確保する必要があります。
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', '.'))
その後、スクリプトからうまくいきました。