Python 脚本在通过 osascript 启动时不起作用

Python script does not work when started via osascript

好的,所以当我 运行 这个命令时:

sudo python3.5 /path/to/my/script.py

它执行得很好 returns:

select user:

  1. Guest
  2. My username

    Choose the account that needs cleaning up (enter corresponding number):

然后我输入“2”,按回车键,脚本 运行 很好。

然而,当我运行:

osascript -e 'do shell script "python3.5 /Path/to/my/script.py" with administrator privileges'

我得到了预期的弹出屏幕,可以在其中输入我的 sudo 密码,但之后它抛出了错误:

OSError: [Errno 9] Bad file descriptor (1)needs cleaning up (enter corresponding number):")

有人对此有任何想法吗?任何帮助将不胜感激!

PS;关于为什么我需要这种方法的一些背景知识 --> 我正在使用需要从中执行 myscript.py 的预脚本(也是用 python 编写的)。我的prescript.py不需要管理员权限。但是,有时需要调用 myscript.py,而 需要管理权限。因为我不想将我的 sudo 密码硬编码到我的任何脚本中,所以我想要一个弹出框来询问我。我想,在我上面提到的 osascript 命令上告诉我的 pre-script.py 到 运行 subprocess.Popen([]) 就可以了。但是,为此,我首先需要让 osascript 命令正常工作。

啊,所以我自己想出了这个。不出所料,这与特权有关。不知何故 "do shell script" 是 运行 通过其他权限然后只需在终端中输入命令。终端中的 "sudo command" 不(完全)等于 "do shell script [script] with administrator privileges".

对我来说,解决它的方法是导航到:

系统偏好设置 --> 安全和隐私 --> 隐私选项卡 --> 辅助功能

然后将Python.app和Terminal.app拖到那个window(你可能需要先按那个[=左下角的小锁解锁它) 23=]).