【问题标题】:Python script does not work when started via osascript通过 osascript 启动时,Python 脚本不起作用
【发布时间】:2016-11-26 15:15:15
【问题描述】:

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

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

它执行良好并返回:

选择用户:

  1. 客人
  2. 我的用户名

    选择需要清理的账号(输入对应的编号):

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

但是,当我运行时:

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

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

OSError: [Errno 9] 错误的文件描述符 (1) 需要清理 (enter 对应的数字):")

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

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

【问题讨论】:

    标签: python python-3.x python-3.5 errno osascript


    【解决方案1】:

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

    对我来说,修复它的方法是导航到:

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

    然后将 Python.app 和 Terminal.app 拖到该窗口(您可能需要先按该窗口左下角的小锁来解锁它)。

    【讨论】:

      猜你喜欢
      • 2012-05-04
      • 2012-12-25
      • 1970-01-01
      • 2021-03-07
      • 2014-11-10
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多