我正在尝试调用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会话吗?
据我所知,无法与Python解释器的现有Pymol会话进行交互。有一些替代方法:
-
现有的pymol命令提示符接受有效的python,您可以直接从提示符中运行任何脚本。也许您可以从那里执行脚本?
-
您可以作为脚本的一部分启动新的Pymol会话。Pymol的
-i
标志可能特别有用 - 它使您能够在无头环境中工作:-i Disable the internal OpenGL GUI (object list, menus, etc.)
-
仔细看看Pymol的
__init.py__
。您会发现Pymol在那里的螺纹的复杂性。也许您可以找到有用的操作?
旁注:
从您的脚本调用 print
will 不是使文本显示在Pymol会话中,它将仅将文本写入标准输出(即它将打印到您的终端)。
以下Pymol Wiki页面可能对您有所帮助:
- 运行脚本
- 启动Pymol
- 从脚本启动