找不到可用的临时目录

Posted

技术标签:

【中文标题】找不到可用的临时目录【英文标题】:No usable temporary directory found 【发布时间】:2013-06-04 11:17:25 【问题描述】:

我正在寻找一个临时目录, 但是当我试图获取目录时使用

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。

【问题讨论】:

我只知道磁盘已满时才会出现此问题,因为该方法通过尝试写入临时文件来找到有效目录。我想这不是你的问题? @BhajunSingh:我对你声称 Python 会通过实际尝试在那里创建文件来确定直接使用哪个文件感到震惊。但这是真的:hg.python.org/cpython/file/2.7/Lib/tempfile.py#l176 - 见_get_default_tempdir()。不使用os.access() 来检查是否可以写入目录似乎很奇怪。 我认为@BhajunSingh 是对的,磁盘可能已满。 ***.com/questions/7518297/… @BrentWashburne 我已经检查了那个答案,然后我会检查磁盘使用情况。 【参考方案1】:

这种错误发生在两种情况

    权限(应为 drwxrwxrwt 并由 root 拥有) 空间

要检查空间(磁盘使用情况)只需在终端上运行命令

df -h

将列出unix上的磁盘使用情况并得到类似的输出

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

如果根(挂载在 / 上)使用率为 100%。

你需要清理tmp目录或者重启机器或者在root上腾出一些空间。

【讨论】:

【参考方案2】:

如果 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

【讨论】:

点赞。因为这绝对是导致此问题的另一个原因。我正在缓存很多超过 inode 限制的日志。输入 df -I ,如果是 100%,那么你需要清除这些文件。记录的文件和不同文件中的数据缓存一定是可能的问题。 要么空间不足,要么你可以创建的文件数量用完。【参考方案3】:

当文件系统已切换到只读模式时,可能会发生此错误。

【讨论】:

说出如何解决问题会更有帮助,而不仅仅是它是什么。 有什么解决办法...? 您可以通过mount 命令检查这是否是问题所在。如果您的文件系统有ro 而不是rw,则您处于只读模式。【参考方案4】:

我在 Docker 中运行 python 脚本时遇到了同样的问题。以下命令为我修复了它:

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

【讨论】:

这为我解决了问题,但删除的内容超出了需要。【参考方案5】:

当 / 上没有空格时,我遇到了同样的问题。

问题:

文件 "/usr/lib64/python2.6/tempfile.py", line 201, in _get_default_tempdir("No usable temporary directory found in %s" % dirlist))
IOError: [Errno 2] 在 ['/tmp', '/var/tmp', '/usr/tmp', '/'] 中找不到可用的临时目录 [FAILED]

[root@master hue]# df -h

Filesystem Size Used 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%/开机

当我清理出一些空间时,它对我来说效果很好。

[root@master log]# service hue start

开始色调:[OK]

[root@master 日志]#

【讨论】:

我在大学容器上的虚拟机上工作,您的回答对我没有帮助。问题依然存在!【参考方案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

在这种情况下,您需要通过删除路径根/ 上的文件、工件文件夹等来腾出空间

【讨论】:

【参考方案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 问题中描述的错误(没有可用的临时目录)。上面的答案不起作用,所以我尝试重新启动我的整个虚拟机,此时我得到了here 描述的错误。按照该线程的最佳答案中的说明进行操作后,问题已解决。

【讨论】:

嗨,欢迎来到 SO。仅供参考,这应该是评论而不是答案 谢谢-您能详细说明一下吗?我想如果有人咨询这个线程来回答 OP 的问题,他们可能会对我提供的解决方案感兴趣。由于它并不真正适合任何其他答案的对话,我不知道我会在哪里发表评论。【参考方案9】:

当我的 Ubuntu 上的根驱动器 (/dev/sda1) 损坏时,我得到了这个。

重新启动,收到错误/dev/sda1 contains a file system with errors

按照此处的说明进行操作:https://askubuntu.com/questions/885062/root-file-system-requires-manual-fsck,即 fsck -y <dev/xxx reported to have error>两次。然后exit 重启。

【讨论】:

以上是关于找不到可用的临时目录的主要内容,如果未能解决你的问题,请参考以下文章

visio2013报临时目录下某些文件找不到(实际有)

visio2013报临时目录下某些文件找不到(实际有)

visio2013报临时目录下某些文件找不到(实际有)

为啥ios中的沙盒路径找不到文件

iis服务器php网站上传文件找不到临时存放路径

Spark JDBC 找不到临时表