Python 仅当PyMOL运行时调用函数

Python 仅当PyMOL运行时调用函数,python,bioinformatics,pymol,Python,Bioinformatics,Pymol,我有一个脚本,可以对蛋白质进行一些计算。完成后,方法导入pymol模块,并使用pymol.cmdAPI在pymol会话中显示结果。该过程类似于以下内容: def display_results(results, protein_fn): import pymol pymol.cmd.load(protein_fn) pymol.cmd.alter(...) ... protein_fn = "1abc.ent" results = analyze_protein

我有一个脚本,可以对蛋白质进行一些计算。完成后,方法导入
pymol
模块,并使用
pymol.cmd
API在pymol会话中显示结果。该过程类似于以下内容:

def display_results(results, protein_fn):
    import pymol
    pymol.cmd.load(protein_fn)
    pymol.cmd.alter(...)
    ...

protein_fn = "1abc.ent"
results = analyze_protein(protein_fn)
display_results(results, protein_fn)
但是,我的脚本不一定需要在PyMOL中显示结果,我希望只有在安装并运行PyMOL时才能这样做


检查PyMOL是否已安装很容易(我可以尝试导入PyMOL),但是有没有办法检查是否有活动的PyMOL会话来显示结果?

我不是PyMOL方面的专家(从未编写过脚本),但我看到了两种可能的方法:

  • 做一些需要打开PyMOL会话和catch的琐碎事情 例外情况
  • 查看进程名称(类似于
    os.system(“ps-ux”)|
    grep-i pymol“

  • 第一种方法更好,第二种方法是肮脏的黑客。

    我通常只是做一些类似的事情:

    try:
        import pymol
        pymol_imported = True
    except:
        pymol_imported = False
    
    然后


    我不知道这是否是Python的“最佳实践”,但无论如何,在大多数情况下,PyMol脚本通常只是快速的、一次性的东西。

    方法1非常简单,并且与Pyhon的“EAFP”策略非常一致。如果没有明确的API解决方案,我可能会这么做。谢谢,Mike,但正如我在问题中指出的,检查PyMOL是否已安装是件小事。我的问题是是否要检查PyMOL是否正在运行。
    if pymol_imported:
        display_results(...)