Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将wxPython应用程序转换为作为无头unix作业运行?_Python_Linux_Wxwidgets - Fatal编程技术网

如何将wxPython应用程序转换为作为无头unix作业运行?

如何将wxPython应用程序转换为作为无头unix作业运行?,python,linux,wxwidgets,Python,Linux,Wxwidgets,我目前正在linux机箱中运行wx的2.8.9.1 我正在使用的应用程序最初是为在MS Windows上运行而编写的。我们计划将部分核心逻辑移植到linux,并将其作为进程运行 问题是linux机箱是无头的。我们将没有X-windows环境。但现有的代码库是以这样一种方式编写的,即它与wx层紧密耦合 例如,我有几个类是wx.EvtHandler的子类 我可能可以一个接一个地重写,但这确实不理想 在新的wx Pheonix中,有一个似乎能够在没有X-Windows的情况下启动事件循环的。但是,它在

我目前正在linux机箱中运行wx的2.8.9.1

我正在使用的应用程序最初是为在MS Windows上运行而编写的。我们计划将部分核心逻辑移植到linux,并将其作为进程运行

问题是linux机箱是无头的。我们将没有X-windows环境。但现有的代码库是以这样一种方式编写的,即它与wx层紧密耦合

例如,我有几个类是wx.EvtHandler的子类

我可能可以一个接一个地重写,但这确实不理想

在新的wx Pheonix中,有一个似乎能够在没有X-Windows的情况下启动事件循环的。但是,它在我的本地版本wx中不可用

最终目标是在cron作业中运行代码


我基本上是在寻找一些关于如何解决这个问题的建议/指针。最好尽量避免重写

一种方法是使用本地显示器。使用选项
-X
将显示器重定向到您的工作站

ssh -X server
然后在服务器上启动应用程序,该应用程序将自动使用工作站的显示

例如,对于Windows,存在或

作为替代方案,您可以使用,它提供了一个无头X服务器。然后,您可以使用
xvfb run
as启动应用程序

xvfb-run my_wx_application

事实证明,重写并不太糟糕

在我的代码中,wx对象只有三个依赖项

1) 子类化wx.EvtHandler

2) wx.CallLater

3) wx.CallAfter

因此,第一个病例需要重新实施


另一个可以用threading.Timer轻松替换。

您尝试过吗?@TurboJ感谢您的建议。我在问题中阐明了我的目标。我不能依赖于外部服务器/工作站,因为使用vncserver的X-Window会话没有外部依赖关系。vncserver作为本地X服务器运行。@TurboJ我明白了。抱歉,环境有点“企业化”,因此我认为重写然后请求安装VNCServer更容易。谢谢您的建议,但它不适合我的用例。最终,我希望将核心代码作为cron作业运行。我不想有一个外部的workstation@AnthonyKong如果您想真正运行无头,您可以考虑XVFB,XVFB仍然是X服务器。请参阅更新的答案。Xvfb听起来很有趣。然而,linux机箱生活在“企业”环境中,因此很难请求其他/外部软件。我正在寻找一些方法来启动一个wx事件循环,而不需要一个完整的X窗口。i、 e.最好是源代码级别的解决方案。毕竟,将业务逻辑与表示层分离是有意义的。