zoukankan      html  css  js  c++  java
  • Pyinstaller打包

    pyinstaller是一个非常简单的打包python的py文件的库,

    把py文件打包成exe文件,方便给小白执行程序。

    官网介绍 http://www.pyinstaller.org/

    安装 

    pip install pyinstaller

    使用PyInstaller生成exe文件

    Pyinstaller -F -w -i tk_down.ico test_gui.py

    其中tk_down.ico 为图标文件

    -F 表示生成单个可执行文件

    -w 表示去掉控制台窗口,这在GUI界面时非常有用。

    -i 表示可执行文件的图标

    举例:

    (v1) C:\Users\spyider>Pyinstaller -F -w -i tk_down.ico test_gui.py
    1788 INFO: PyInstaller: 4.5.1
    1789 INFO: Python: 3.6.4 (conda)
    1790 INFO: Platform: Windows-7-6.1.7601-SP1
    1792 INFO: wrote C:\Users\china\pord_spyider\test_gui.spec
    1796 INFO: UPX is not available.
    1798 INFO: Extending PYTHONPATH with paths
    ['C:\\Users\\spyider', 'C:\\Users\\spyider']
    2315 INFO: checking Analysis
    2393 INFO: checking PYZ
    2419 INFO: checking PKG
    2420 INFO: Building because toc changed
    2421 INFO: Building PKG (CArchive) PKG-00.pkg
    6012 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
    6052 INFO: Bootltestder c:\programdata\anaconda3\lib\site-packages\PyInstaller\boo
    tltestder\Windows-32bit\runw.exe
    6053 INFO: checking EXE
    6054 INFO: Rebuilding EXE-00.toc because test_gui.exe missing
    6055 INFO: Building EXE from EXE-00.toc
    6058 INFO: Copying icons from ['tk_down.ico']
    6069 INFO: Writing RT_GROUP_ICON 0 resource with 20 bytes
    6069 INFO: Writing RT_ICON 1 resource with 67624 bytes
    6075 INFO: Updating manifest in C:\Users\china\pord_spyider\build\test_gui\runw.ex
    e.on_gk_di
    6083 INFO: Updating resource type 24 name 1 language 0
    6088 INFO: Appending archive to EXE C:\Users\spyider\dist\test_gui.exe
    11275 INFO: Building EXE from EXE-00.toc completed successfully.

    错误解决

      File "c:\programdata\anaconda3\envs\v1\lib\site-packages\PyInstaller\hooks\hook-distutils.py", l
        hiddenimports = [sysconfig._get_sysconfigdata_name()]
    TypeError: _get_sysconfigdata_name() missing 1 required positional argument: 'check_exists'

    首先,转到python交互式shell,做

    $ python
    >> import sysconfig
    >> print(sysconfig.__file__)

    这应该为您提供文件所在的位置sysconfig。然后你需要去那个文件并编辑源代码,

    修改了check_exists= True

    源文件修改后

    def _get_sysconfigdata_name(check_exists= True):
       
        res = os.environ.get('_PYTHON_SYSCONFIGDATA_NAME', None)
        if res and check_exists:
            try:
                loader = importlib.util.find_spec(res)
            except:
                res = None
        if res:
            return res
        return '_sysconfigdata_{abi}_{platform}_{multiarch}'.format(
                abi=sys.abiflags,
                platform=sys.platform,
                multiarch=getattr(sys.implementation, '_multiarch', ''))

      

  • 相关阅读:
    linux命令大全
    IP协议
    TCP、IP、ARP协议之间的工作关系
    程序出现问题后
    HTTP(超文本传输协议)
    多线程
    syslog.conf文件
    logger命令
    gdb
    二、数据的存储结构
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/15588873.html
Copyright © 2011-2022 走看看