【问题标题】:How do I exclude tcl/tk folders in my pyinstaller packed app?如何在我的 pyinstaller 打包应用程序中排除 tcl/tk 文件夹?
【发布时间】:2016-07-17 22:02:19
【问题描述】:

我正在使用 python(wxPython for UI) 在 windows 7 上开发软件,而 pyinstaller 是我用于打包的工具。但最近将 pyinstaller 升级到 3.1.1 后,tcl/tk 文件夹开始出现在目录中。并且使用 pyinstaller 2.1 捆绑完全相同的源代码,找不到这样的文件夹,这是应该的方式,因为我从未在任何地方使用过 tcl/tk。

我已经尝试使用a.datas -= TOC([('tcl', None, 'DATA'), ('tk', None, 'DATA')]),但它不起作用。那么如何在打包时排除tcl/tk呢?

【问题讨论】:

    标签: python tkinter wxpython pyinstaller


    【解决方案1】:

    破解 sys.modules 以删除 FixTk,并排除 tcl、tk 和 tkinter。

    所以在你的 pyinstaller .spec 文件中至少包含:

    import sys
    sys.modules['FixTk'] = None
    
    a = Analysis(['kill_tk_test.py'],
        {...snipped...}
         excludes=['FixTk', 'tcl', 'tk', '_tkinter', 'tkinter', 'Tkinter'],
    

    来源:@remdragon https://github.com/pyinstaller/pyinstaller/wiki/Recipe-remove-tkinter-tcl

    【讨论】:

      【解决方案2】:

      调用 pyinstaller 时可以只使用 add-data 选项:

      pyinstaller --onefile ^
          --add-data C:\Python27\tcl\tcl8.5;tcl\tcl8.5 ^
          --add-data C:\Python27\tcl\tk8.5;tk\tk8.5 ^
          some_app.py
      

      【讨论】:

      • 我认为 OP 想要排除 tk,而不是包含它。
      猜你喜欢
      • 2014-03-29
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      相关资源
      最近更新 更多