python-2.7 – pygame.init()在使用systemd运行时失败

python-2.7 – pygame.init()在使用systemd运行时失败,第1张

概述我正在尝试使用systemd运行 python pygame脚本,由于某种原因,脚本只是退出而没有错误. 这是Raspberry Pi与Raspian“Jessie lite”. 如果我使用“sudo python myscript.py”手动运行脚本,它可以正常工作. sudo systemctl status myscript.service reports: * myscript.servi 我正在尝试使用systemd运行 python pygame脚本,由于某种原因,脚本只是退出而没有错误.
这是RaspBerry Pi与Raspian“JessIE lite”.

如果我使用“sudo python myscript.py”手动运行脚本,它可以正常工作.

sudo systemctl status myscript.service reports:

* myscript.service - Python ScriptLoaded: loaded    /etc/systemd/system/myscript.service; enabled)    Active: inactive (dead) since Mon 2016-08-29 04:33:19 UTC; 1s agoProcess: 3275> ExecStart=/usr/bin/python /home/pi/myscript.py (code=killed,signal=HUP)Main PID: 3275 (code=killed,signal=HUP)

如果我使用sudo systemctl启动myscript.service手动启动服务,则会发生同样的事情.

我已经将我的脚本删除到pygame.init()调用.这是它退出的地方.

如果我尝试手动初始化模块,那么“cdrom”,“joystick”,“threads”和“Font”会正常初始化,但是调用display.init()会导致程序退出.没有例外.

我在网上找到的唯一资源是this guy.看起来他遇到了我所看到的完全相同的事情.
我试过strace,如果我等了足够长的时间(2分钟),它会起作用!
显然我不能一直用strace跑.我认为它减慢了初始化的执行速度,以某种方式允许它工作.

编辑:
所以这个问题似乎是systemd发送一个SIGHUP.如果在Python中未处理此 *** 作,则默认 *** 作是退出.快速解决方法是抓住SIGHUP:

import signaldef handler(signum,frame):    passtry:    signal.signal(signal.SIGHUP,handler)except AttributeError:    # windows compatibility    pass

这么多燃烧的问题.为什么systemd会这样做?为什么strace解决这个问题?为什么有些Python脚本会获得SIGHUP而其他Python脚本却没有?

解决方法 对我来说,解决方案只是初始化我需要的特定模块.

在我的情况下,而不是pygame.init()我初始化了pygame.mixer.init(),现在systemd可以启动服务.

总结

以上是内存溢出为你收集整理的python-2.7 – pygame.init()在使用systemd运行时失败全部内容,希望文章能够帮你解决python-2.7 – pygame.init()在使用systemd运行时失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1197701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存