Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scipy imshow与El Capitan SIP和/var/文件夹冲突/_Python_Scipy_Osx Elcapitan_Imshow - Fatal编程技术网

Python scipy imshow与El Capitan SIP和/var/文件夹冲突/

Python scipy imshow与El Capitan SIP和/var/文件夹冲突/,python,scipy,osx-elcapitan,imshow,Python,Scipy,Osx Elcapitan,Imshow,我遇到了一些权限问题,我确信有一个快速解决方案,但我找不到它 设置:Mac,OSX:El Capitan,Anaconda,Python3.5.1 从bash(使预览成为默认查看器): export SCIPY\u PIL\u IMAGE\u VIEWER=/Applications/Preview.app/Contents/MacOS/Preview 来自口译员: import scipy.misc as mi im1 = mi.imread('local_filename.png') mi

我遇到了一些权限问题,我确信有一个快速解决方案,但我找不到它

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

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

export SCIPY\u PIL\u IMAGE\u 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/wrnzzzgd41d7064lx64nc10h0000gn/T中/

它的权限是:-rw-----,预览应用程序的UID:501(我自己)

我觉得这是El Capitan SIP(系统完整性保护)的问题,这就引出了我的问题:

  • 有没有办法让scipy将临时文件写入文件夹 可通过预览访问
  • 或者,有没有一种方法可以授予预览权限 读取/var/folder/而不禁用SIP

  • 谢谢

    我发现了一个可行的小技巧,有两个步骤:

    在pilutil.py中,编辑行381+(在def imshow下)

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

    第二步。使用
    open
    而不是
    $SCIPY\u PIL\u IMAGE\u查看器
    引用预览应用程序可以工作。后一种方法有一个更普遍的错误

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

    /Applications/Preview.app/Contents/MacOS/Preview /path/to/file
    

    这将导致预览打开文件。但它会引发权限错误,似乎与文件位于何处无关。

    尝试从/var/打开文件的原因是什么?文件不在/var/?中时是否打开,以便在调用imshow()时,它将im1对象转换为png图像,然后将其存储在临时文件中。然后,它将该临时文件传递给指定的“查看器”,在本例中,我对其进行了预览。但是,由于某种原因,Preview无法打开它,抛出了上面提到的错误。当我从/var/folders/手动打开这些文件时,它们可以很好地打开。有趣的是,当使用外部应用程序查看时,我没有注意到临时文件。我将进一步考虑可能导致权限错误的原因。@MaxwellGrady是的,这很奇怪,如果在bash中执行
    /path/to/preview/executable/path/to/temp/file
    ,它会抛出权限错误。但是如果你打开/path/to/temp/file。
    /Applications/Preview.app/Contents/MacOS/Preview /path/to/file