我有一个
python脚本,它可以创建一个GUI.当在此GUI中按下“运行”按钮时,它会从导入的包(我制作)中运行一个函数
from predictmiP import predictor
class MiPFrame(wx.Frame):
[...]
def runmiP(self, event):
predictor.runPrediction(self.uploadProtInterestField.GetValue(), self.uploadAllProteinsField.GetValue(), self.uploadPfamTextField.GetValue(), \
self.edit_eval_all.Value, self.edit_eval_small.Value, self.saveOutputField)
当我直接从python运行GUI时,它运行良好,程序写入一个输出文件.然而,当我进入应用程序时,GUI启动,但是当我按下按钮时没有任何反应. predictmiP确实包含在build / bdist.macosx-10.3-fat / python2.7-standalone / app / collect /中,就像我正在使用的所有其他导入一样(虽然它是空的,但是和所有其他导入一样我有).
如何获取多个python文件,或导入的包与py2app一起使用?
我的setup.py:
“””
这是py2applet生成的setup.py脚本
用法:
python setup.py py2app
“””
from setuptools import setup
APP = ['mip3.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
编辑:
它看起来很有效,但它只能起作用.从我的GUI我打电话
blast.makeBLASTdb(self.uploadAllProteinsField.GetValue(), 'allDB')
# to test if it's working
dlg = wx.MessageDialog( self, "werkt"+self.saveOutputField, "werkt", wx.OK)
dlg.ShowModal() # Show it
dlg.Destroy() # finally destroy it when finished.
blast.makeBLASTdb看起来像这样:
def makeBLASTdb(proteins_file, database_name):
subprocess.call(['/.'+os.path.realpath(__file__).rstrip(__file__.split('/')[-1])+'blast/makeblastdb', '-in', proteins_file, '-dbtype', 'prot', '-out', database_name])
这个函数被调用,我通过子进程调用的makeblastdb输出一个文件.但是,该计划不会继续,
dlg = wx.MessageDialog( self, "werkt"+self.saveOutputField, "werkt", wx.OK)
dlg.ShowModal() # Show it
在下一行中永远不会执行.