在python中,确定显示是仅支持文本还是图形可用

在python中,确定显示是仅支持文本还是图形可用,python,Python,我有一些嵌入matlibplot.py的python脚本。我在桌面上运行这些工具,用于开发、测试、演示和操作,它们显示matlibplot图形。但是,我也在没有图形显示的服务器上运行这些,只有终端模式,或者在后台使用输出重定向 我已经在脚本中设置了一个选项(手动)作为命令行选项。我想自动确定(以一般方式-不特定于显示器和图形,如X)是否可以通过代码获得图形。有人这样做了吗?或者知道执行此检查的代码段吗?我已经编写了一个小功能,用于检测windows或linux上是否存在图形卡,即: import

我有一些嵌入matlibplot.py的python脚本。我在桌面上运行这些工具,用于开发、测试、演示和操作,它们显示matlibplot图形。但是,我也在没有图形显示的服务器上运行这些,只有终端模式,或者在后台使用输出重定向


我已经在脚本中设置了一个选项(手动)作为命令行选项。我想自动确定(以一般方式-不特定于显示器和图形,如X)是否可以通过代码获得图形。有人这样做了吗?或者知道执行此检查的代码段吗?

我已经编写了一个小功能,用于检测
windows
linux
上是否存在图形卡,即:

import subprocess, os

def gc_available():
    if os.name == 'nt': # Windows
        import wmi 
        try: 
            wmi.WMI().computer.Win32_VideoController()[0] # Tested on Windows 10
            return 1
        except:
            pass

    elif os.name == 'posix': # Linux
        out = subprocess.getoutput('sudo lshw -c video | grep configuration') # Tested on CENTOS 7 and Ubuntu
        if out:
            return 1

用法:

if gc_available():
    print("VideoController available")
else:
    print("VideoController Not available")

我集成了一个小功能来检测
windows
linux
上是否存在图形卡,即:

import subprocess, os

def gc_available():
    if os.name == 'nt': # Windows
        import wmi 
        try: 
            wmi.WMI().computer.Win32_VideoController()[0] # Tested on Windows 10
            return 1
        except:
            pass

    elif os.name == 'posix': # Linux
        out = subprocess.getoutput('sudo lshw -c video | grep configuration') # Tested on CENTOS 7 and Ubuntu
        if out:
            return 1

用法:

if gc_available():
    print("VideoController available")
else:
    print("VideoController Not available")

您现在想知道系统是否有python图形卡,是吗?您现在想知道系统是否有python图形卡,是吗?但是如果我
ssh
到集群节点(可能配备了多个GPU),这仍然会声称
“VideoController可用”
,不是吗?@dedObed不确定,我必须测试它,您可以在
群集节点上执行此操作吗?OP从来没有提到过集群节点,不过,我很想知道结果。至少我是通过“在没有图形显示的服务器上运行这些节点”来理解这一点的。我想,是否在集群中并不重要,这些机器只是缺少任何VGA/HDMI/任何输出设备,不运行X服务器等。Pedro,这对于我的应用程序来说都很好,无论是在linux还是windows中,正如您设计的那样。我运行了几次测试,并根据需要执行。非常感谢您的快速回复!!!!!不客气@TurnerLittle!德国劳埃德船级社。如果我的答案对你有帮助,请接受它作为正确答案。非常感谢。但是如果我
ssh
连接到集群节点(可能配备了多个GPU),这仍然会声称
“VideoController可用”
,不是吗?@dedObed不确定,我必须测试它,你能在
集群节点上执行吗?OP从来没有提到过集群节点,不过,我很想知道结果。至少我是通过“在没有图形显示的服务器上运行这些节点”来理解这一点的。我想,是否在集群中并不重要,这些机器只是缺少任何VGA/HDMI/任何输出设备,不运行X服务器等。Pedro,这对于我的应用程序来说都很好,无论是在linux还是windows中,正如您设计的那样。我运行了几次测试,并根据需要执行。非常感谢您的快速回复!!!!!不客气@TurnerLittle!德国劳埃德船级社。如果我的答案对你有帮助,请接受它作为正确答案。非常感谢。