您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 任何人都成功地将数据文件捆绑到Pyinstaller的单个文件中?

5b51 2022/1/14 8:21:59 python 字数 4948 阅读 524 来源 www.jb51.cc/python

我一直在梳理Stack Overflow和网络的其余部分,介绍如何将数据文件添加到我的python应用程序中:import Tkinter class simpleapp_tk(Tkinter.Tk): def __init__(self,parent): Tkinter.Tk.__init__(self,parent)

概述

我一直在梳理Stack Overflow和网络的其余部分,介绍如何将数据文件添加到我的python应用程序中:

import Tkinter

class simpleapp_tk(Tkinter.Tk):
    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()

    def initialize(self):
        self.grid()

--- Everything Fine Here ---

        self.B = Tkinter.Button(self,text = 'Create Document',command = self.OnButtonClick)
        self.B.grid(column = 0,row = 6)


    def OnButtonClick(self):
        createDoc()

if __name__ == "__main__":
    app = simpleapp_tk(None)
    app.title('Receipt Form')
    app.iconbitmap(os.getcwd() + '/M.ico')
    app.mainloop()

我尝试过使用.spec文件没有运气

Onedir工作正常,但是当我尝试编译成单个可执行文件时,它会出现错误,即文件’M.ico’未定义.

如果有人能够将数据文件与pyinstaller捆绑到一个文件中.请帮忙.谢谢.

我在使用PyInstaller 3.2运行Python 2.7的Windows 10计算机上

# -*- mode: python -*-

block_cipher = None


a = Analysis(['pubdata.py'],pathex=['.','/interface','/recommender'],binaries=None,datas=[('WordNet/*.txt','WordNet'),('WordNet/*.json',('WordNet/pdf_parsing/*.json','pdf_parsing'),('WordNet/pdf_parsing/*.xml',('images/*.png','images'),('database/all_Meta/Flybase/*.txt','all_Meta'),('database/all_Meta/Uniprot/*.txt',('database/json_files/*.json','json_files'),('Data.db','.')],hiddenimports=['interface','recommender'],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher)
pyz = PYZ(a.pure,a.zipped_data,cipher=block_cipher)
exe = EXE(pyz,a.scripts,exclude_binaries=True,name='GUI',debug=False,strip=False,upx=True,console=True )
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,name='GUI')
app = BUNDLE(coll,name='App.app',icon=None)

在此之后,如果您尝试访问在.spec文件中指定的任何数据文件,则必须在代码中使用Pyinstaller的_MEIPASS文件夹来引用您的文件.以下是我使用名为Data.db的文件的方式:

import sys
import os.path

        if hasattr(sys,"_MEIPASS"):
            datadir = os.path.join(sys._MEIPASS,'Data.db')
        else:
            datadir = 'Data.db'

        conn = lite.connect(datadir)

上面的这个方法取代了这个独立的语句:

conn = lite.connect("Data.db")

当我经历同样的事情时,这个链接对我帮助很大:
https://irwinkwan.com/2013/04/29/python-executables-pyinstaller-and-a-48-hour-game-design-compo/

希望这可以帮助!

总结

以上是编程之家为你收集整理的python – 任何人都成功地将数据文件捆绑到Pyinstaller的单个文件中?全部内容,希望文章能够帮你解决python – 任何人都成功地将数据文件捆绑到Pyinstaller的单个文件中?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶