我写了个 Chrome 插件,其中 Native App 部分是一个 Python 3 脚本,通过标准输入输出与插件交互。插件通过 Chrome 调用这个脚本(或者可执行文件)读取 Safari 的 Bookmarks.plist ,因此需要 Full Disk Access 。
我之前使用 pyinstaller 打包可执行文件,然后为这个文件赋予权限。但不知是不是升级 Monterey 的缘故,现在就算是打包 Hello World 类型的脚本都不能通过完整性校验了。我只有一台 mac ,暂时不能验证。
python3
,#!/usr/bin/env python3
不能影响最终调用的解释器(或许是我用错了方法);/usr/bin/env
虽然可行,但是感觉很危险;请问还有什么好办法?
关于 PyInstaller 打包失败:
PyInstaller: 4.5.1
Python: 3.9.7
Platform: macOS-12.0.1-x86_64-i386-64bit
使用 pyinstaller ./main.py
,其中 main.py
内容如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
def Main():
print(sys.version_info)
sys.exit(0)
if __name__ == '__main__':
Main()
报错如下:
Traceback (most recent call last):
File "/usr/local/bin/pyinstaller", line 8, in <module>
sys.exit(run())
File "/usr/local/lib/python3.9/site-packages/PyInstaller/__main__.py", line 126, in run
run_build(pyi_config, spec_file, **vars(args))
File "/usr/local/lib/python3.9/site-packages/PyInstaller/__main__.py", line 65, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/build_main.py", line 815, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/build_main.py", line 762, in build
exec(code, spec_namespace)
File "/Users/***/Temp/main.spec", line 23, in <module>
exe = EXE(pyz,
File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/api.py", line 524, in __init__
self.__postinit__()
File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/datastruct.py", line 159, in __postinit__
self.assemble()
File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/api.py", line 761, in assemble
osxutils.fix_exe_for_code_signing(self.name)
File "/usr/local/lib/python3.9/site-packages/PyInstaller/utils/osx.py", line 211, in fix_exe_for_code_signing
assert linkedit_seg.fileoff + linkedit_seg.filesize == \
AssertionError: Sanity check failed!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.