scipy imshow与El Capitan SIP和/var/folders冲突/

2024-10-01 09:23:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一些权限问题,我确信有一个快速解决办法,但我找不到。在

设置:Mac,OSX:El Capitan,Anaconda,Python3.5.1

从bash(使预览成为默认查看器):

export SCIPY_PIL_IMAGE_VIEWER=/Applications/Preview.app/Contents/MacOS/Preview

口译员:

import scipy.misc as mi

im1 = mi.imread('local_filename.png')
mi.imshow(im1)

从预览中显示以下错误:文件“tmph_9q7拉乌语.png“无法打开,因为您没有查看权限。在

此文件的路径为:/nzgD644/nzgD644/

它的权限是:-rw--------,Preview app的UID:501(我自己)

我觉得这是一个El Capitan SIP(系统完整性保护)问题,这导致了我的问题:

  1. 有没有办法让scipy把临时文件写入文件夹 可通过预览访问
  2. 或者,有没有办法给 读取/var/folder/而不禁用SIP。在

谢谢!在


Tags: 文件app权限pngmacscipypreviewel
1条回答
网友
1楼 · 发布于 2024-10-01 09:23:52

我发现了一个有用的小方法,有两个步骤:

在皮鲁蒂.py,编辑第381行+(在def imshow下)

import os
import time #Me: 1. needed later
os.close(fnum)

cmd = os.environ.get('SCIPY_PIL_IMAGE_VIEWER', 'see') 
cmd = 'open'  #Me: 2. User added line
print(fname)
status = os.system("%s %s" % (cmd, fname))

time.sleep(0.1) #Me: 1.    
os.unlink(fname)

第1步。预览需要一个时间延迟(0.05太快)。否则,取消链接将在预览正确显示文件之前删除该文件。在

第二步。使用open而不是对预览应用程序的$SCIPY_PIL_IMAGE_VIEWER引用。后一种方法有更普遍的误差。在

不过,还有一个更大的问题,我可能会在另一篇文章中提出。从bash内部:

^{pr2}$

这将导致预览打开文件。但它会引发权限错误,似乎与文件所在的位置无关。在

相关问题 更多 >