在OSX 10.15中通过crontab运行Python脚本遇权限错误求助
问题描述
本人有crontab使用经验,但首次在OSX 10.15系统中用它运行Python脚本时,出现如下异常:
Fatal Python error: init_import_site: Failed to import the site module Python runtime state: initialized Traceback (most recent call last): File "<frozen importlib._bootstrap>", line 1176, in _find_and_load File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap>", line 980, in exec_module File "<frozen site>", line 616, in <module> File "<frozen site>", line 599, in main File "<frozen site>", line 517, in venv PermissionError: [Errno 1] Operation not permitted: '/Users/macbook/code/script/venv_3-11-4/pyvenv.cfg'
确认pyvenv.cfg文件存在,其权限信息如下:
-rw-r--r-- 1 macbook staff 307 Jun 26 11:50 venv_3-11-4/pyvenv.cfg
请问出现该权限错误的原因是什么?
原因分析
- macOS Catalina隐私权限限制:OSX 10.15(Catalina)引入了更严格的隐私保护机制,crontab作为后台进程,默认没有用户目录的访问权限。即便pyvenv.cfg文件本身权限正常,系统隐私框架也会拦截crontab进程对该文件的读取操作。
- crontab执行环境权限上下文差异:crontab的运行环境和交互式Terminal的shell环境权限范围不同,前者权限更受限,无法像手动运行脚本那样正常访问虚拟环境配置文件,导致看似权限合规的文件被拒绝访问。
- 系统安全策略的间接管控:Catalina对后台进程的资源访问做了严格管控,crontab启动的Python进程属于后台进程范畴,读取用户自定义目录下的虚拟环境配置文件时,会触发系统的权限拦截。
内容的提问来源于stack exchange,提问作者WebOrCode
相关产品推荐
相关产品推荐

