【发布时间】:2014-04-29 17:33:53
【问题描述】:
我有以下脚本:
#!/usr/bin/env python
import sys
import pyttsx
def main():
print 'running speech-text.py...'
engine = pyttsx.init()
str = "Hi..."
if len(sys.argv) > 1:
str = sys.argv[1]
engine.say(str)
engine.runAndWait()
if __name__ == '__main__':
main()
我已经把它放在/usr/bin/speech-test.py
我还赋予它可执行权限和所有权给 root:
sudo chown root:root /usr/bin/speech-test.py
sudo chmod 4755 /usr/bin/speech-test.py
但是,只有当我以sudo speec-test.py 运行时,此脚本才能正确运行。如果我尝试以 speech-test.py 的身份运行它,它会抱怨找不到一堆 ALSA lib 文件。
我是否缺少让我的脚本以 root 权限运行的东西?
【问题讨论】:
-
问题可能出在 hashbang 中的
env,但我需要对其进行测试。你称它为./speech-test.py,而不是python speech-test.py?因为以后会以用户权限运行python。 -
只是
speech-test.py没有./ -
你不能在 linux 上使用 SUID 脚本。如果需要,请编写二进制启动器或使用 nopasswd sudo。任何以 hashbang 开头的可执行文件都是脚本。
-
如果您不想使用 nopasswd sudo,那么您可以使用类似 cx_Freeze 的 Python 脚本创建二进制可执行文件。