scipy imshow 与 El Capitan SIP 和 /var/folders/
scipy imshow conflict with El Capitan SIP and /var/folders/
我 运行 遇到了一些权限问题,我确信有一个快速修复程序,但我找不到它。
设置: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_9q7lwu.png”,因为您没有查看它的权限。
这个文件的路径在:/var/folders/w4/wrnzszgd41d7064lx64nc10h0000gn/T/
它的权限是:-rw------,预览应用的UID:501(我自己)
我觉得这是一个 El Capitan SIP(系统完整性保护)问题,这引出了我的问题:
- 有没有办法让 scipy 将临时文件写入文件夹
可通过预览访问,
- 或者,有没有办法授予预览权限
在不禁用 SIP 的情况下读出 /var/folder/。
谢谢!
我发现了一个有用的小技巧,有两个步骤:
在 pilutil.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 太快了)。否则取消链接会在预览正确显示之前删除文件。
第 2 步。使用 open
而不是 $SCIPY_PIL_IMAGE_VIEWER
对预览应用程序的引用有效。后一种方法有一个更普遍的错误。
不过还有一个更大的问题,我可能会在单独的 post 中提出。来自 bash:
/Applications/Preview.app/Contents/MacOS/Preview /path/to/file
这应该会导致预览打开文件。但它却引发了权限错误,似乎与文件所在的位置无关。
我 运行 遇到了一些权限问题,我确信有一个快速修复程序,但我找不到它。
设置: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_9q7lwu.png”,因为您没有查看它的权限。
这个文件的路径在:/var/folders/w4/wrnzszgd41d7064lx64nc10h0000gn/T/
它的权限是:-rw------,预览应用的UID:501(我自己)
我觉得这是一个 El Capitan SIP(系统完整性保护)问题,这引出了我的问题:
- 有没有办法让 scipy 将临时文件写入文件夹 可通过预览访问,
- 或者,有没有办法授予预览权限 在不禁用 SIP 的情况下读出 /var/folder/。
谢谢!
我发现了一个有用的小技巧,有两个步骤:
在 pilutil.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 太快了)。否则取消链接会在预览正确显示之前删除文件。
第 2 步。使用 open
而不是 $SCIPY_PIL_IMAGE_VIEWER
对预览应用程序的引用有效。后一种方法有一个更普遍的错误。
不过还有一个更大的问题,我可能会在单独的 post 中提出。来自 bash:
/Applications/Preview.app/Contents/MacOS/Preview /path/to/file
这应该会导致预览打开文件。但它却引发了权限错误,似乎与文件所在的位置无关。