我写了个 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!
1
amet OP 我尝试搜索了 `pyinstaller alternative`,试了试 nuitka ,解决了打包为可执行文件的问题
|
2
dingwen07 2021-10-28 23:21:09 +08:00 via iPhone
Automator.app 创建 app
里面有 shell ,然后直接 shell 执行 python 脚本 |
3
yzwduck 2021-10-29 07:33:25 +08:00 1
请先确定是哪个程序需要授予 Full Disk Access:用 spindump 收集 Python 进程信息,然后看它的 Responsible 进程。我觉得在这种使用场景下,需要 Full Disk Access 的很可能是 Chrome 浏览器。
|
4
LoneFireBlossom 2021-11-05 17:38:05 +08:00 via iPhone
一台 Mac 也可以装多个系统我记得 你可以搜一下
|