我正在尝试从 python 脚本(wxpython GUI)调用当前的 PyMOL 会话,然后从 PyMOL 加载一些数据并向 PyMOL 发送一些命令。目前我可以在 python 脚本中打开一个新的 PyMOL 会话:
import sys, os
from wx import *
app = wx.App()
dialog = wx.FileDialog ( None, message = 'Set PyMOL directiry', style = wx.OPEN)
if dialog.ShowModal() == wx.ID_OK:
# Pymol path
moddir = dialog.GetDirectory()
sys.path.insert(0, moddir)
os.environ['PYMOL_PATH'] = moddir
import pymol
pymol.finish_launching()
else:
print 'Nothing was selected.'
from pymol import *
dialog1 = wx.FileDialog ( None, message = 'Set PDB file', style = wx.OPEN)
if dialog1.ShowModal() == wx.ID_OK:
pdbfile = dialog1.GetPath()
cmd.load(pdbfile)
else:
print 'Nothing was selected.'
dialog.Destroy()
app.MainLoop()
但实际上我想检查我的 python 脚本是否已经打开了任何 PyMOL 会话。我在这里找到了与该主题相对应的讨论: 仅在 PyMOL 运行时调用函数 在此讨论之后,我尝试在 PyMOL 中调用“打印”函数:
try:
from pymol import cmd
print 'Connected'
except:
<open new Pymol sesssion>
但我在 PyMOL cmd 中看不到任何文本。我试图在此语句之前确定 PyMOL 路径,但我又失败了。
有谁知道如何从 python 脚本调用当前的 PyMOL 会话?