如何向py2app添加多个文件?

2024-10-01 15:45:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个制作GUI的python脚本。当按下这个GUI中的一个按钮'Run'时,它将运行一个导入包(我制作的)中的函数,如下所示

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确实包含在生成中/b列表.macosx-10.3-fat/python2.7-standalone/app/collect/,就像我使用的所有其他导入一样(虽然它是空的,但这与我拥有的所有其他导入相同)。在

如何获得多个python文件或导入的包来使用py2app?在

我的设置.py公司名称:

“” 这是一个设置.pypy2applet生成的脚本

用法: python设置.pypy2app公司 “”

^{pr2}$

编辑:

它看起来很管用,但只管用一点点。从我的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

下一行永远不会被执行。在


Tags: 文件函数self脚本itgui按钮file
2条回答

py2app(或者更确切地说,设置.py)不神奇地包含文件,只是因为您将它们导入到应用程序代码中。在

根据你的描述我不太清楚预测mip.py文件的位置,mip3.py文件所在的位置设置.py文件的位置,以及目录树其余部分的外观。在

因此,关于打包Python文件的一些一般性说明(另请参见http://docs.python.org/2.7/distutils/index.html)。如果只有几个文件,可以显式列出它们:

setup(
    py_modules=['file1', 'file2']
)

这将包括file1.py和{}。如果你有很多文件,那当然会很乏味,所以你可以看出来设置.py要包含它找到的所有Python文件,请执行以下操作:

^{pr2}$

这需要一个名为example的目录,其中包含一个__init__.py,并将包含在其中找到的所有Python文件。在

如果您有不同的目录布局,例如包含Python文件的src目录,请将其设置为:

setup(
    package='example',
    package_dir={'': 'src'}
)

这需要一个目录src/example,并包含下面的Python文件。在

自从你设置.py没有提供,我猜它不像:

from setuptools import setup

OPTIONS = {'packages' : ['predictmiP']}

setup(app=someapp.py, options={'py2app' : OPTIONS},
      setup_requires=['py2app'])

或者你在找OPTIONS['includes']?或者OPTIONS['frameworks']?在

相关问题 更多 >

    热门问题