好的,所以当我运行这个命令时:
sudo python3.5 /path/to/my/script.py
执行正常并返回:
选择用户:
- 访客
- 醇>
我的用户名
选择需要清理的帐户(输入相应的号码):
之后我输入" 2",按回车键,脚本运行良好。
然而,当我跑步时:
osascript -e 'do shell script "python3.5 /Path/to/my/script.py" with administrator privileges'
我得到了预期的弹出屏幕,在其中输入我的sudo密码,但之后它会抛出错误:
OSError:[Errno 9]错误的文件描述符(1)需要清理(输入 相应的数字):")
有人对此有任何想法吗?任何帮助将不胜感激!
PS;关于为什么我需要这种方法的一些背景 - >我正在使用一个需要执行myscript.py的预脚本(也是用python编写的)。我的prescript.py 不 需要管理员权限。但有时,需要调用myscript.py 需要管理权限。由于我不想将我的sudo-password硬编码到我的任何脚本中,我想要一个弹出框询问我。我想,告诉我的pre-script.py在我上面提到的osascript命令上运行subprocess.Popen([])就行了。但是,为此,我首先需要让osascript命令正常工作。
答案 0 :(得分:0)
"do shell script"
通过其他权限运行,然后只在终端输入命令。终端中的"sudo command"
不等于(完全)"do shell script [script] with administrator privileges"
。
对我而言,修正它的是导航到:
系统偏好设置 - >安全和隐私 - >隐私标签 - >辅助功能
然后将Python.app和Terminal.app拖到该窗口(您可能需要首先通过按下该窗口左下角的小锁来解锁它)。