4

我有一个 OS X Python 应用程序,它使用 wxPython 作为它的 GUI 控件。我希望在启动网络服务之前提示用户提供管理权限(类似于在 Objective-C 中使用授权服务 API)。

我找到的最接近的库是 Bob Ippolito 的授权库,但它已经过时并且与 Snow Leopard (OS X 10.6.4 / Python 2.6.4) 存在兼容性问题。

我的解决方法是创建一个 Objective-C 启动器,它以管理权限运行 python 应用程序,但感觉相当笨拙。

谢谢您的帮助!

4

4 回答 4

5

如果它只是你需要运行的 shell 命令,请求提升的权限,那么你可以这样做:

os.system("""osascript -e 'do shell script "<commands go here>" " with administrator privileges'""")

它将在 applescript 解释器中运行一个 shell 命令,并提示用户输入他们的帐户凭据;使用 sudo 有效地运行命令。

请注意,在命令中转义引号会很有趣,例如

os.system("""osascript -e 'do shell script "mkdir -m 0775 -p \\"%s\\" " with administrator privileges'"""%d)

希望有帮助!

于 2011-06-24T05:20:08.683 回答
2

您可以通过使用Platypus将其变成本机 Mac OS X 应用程序,以管理员权限运行整个脚本 。

于 2012-03-13T01:42:08.007 回答
1

您可能想查看此处发布的另一个问题的答案:我应该使用哪种 API 将用户权限提升为 Mac OS X 中的超级用户?

于 2010-07-03T09:19:28.057 回答
0

这是运行“ ls ”命令并询问密码的方法

os.system("""
osascript -e 'do shell script "ls"  with administrator privileges'
""")
于 2021-03-12T02:02:34.970 回答