用pyinstaller把python脚本编译成可执行程序(windows系统)

本文介绍了如何使用PyInstaller将Python脚本打包成可执行程序,包括安装方法、常见参数说明及解决打包过程中遇到的错误问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接:https://blog.youkuaiyun.com/kevindree/article/details/88711195

看了一些文章,介绍pyinstaller作为一个第三方库,可以将python脚本打包成可执行程序,依葫芦画瓢,开始操作。

首先当然是下载,安装。

  1. pip install pyinstaller
  2. # 或者
  3. python -m pip install pyinstaller

非常顺利,成功执行。

然后为了生成一个单一的exe执行程序,采用参数-F进行打包,命令如下:

pyinstaller -F myscript.py

我所使用的方法!!!!没有使用-F生成一个单独的exe,而是(pyinstaller myscript.py)生成一个文件夹,测试成功

执行成功,进入dist目录,看到可执行程序,非常高兴。但是在cmd窗口中执行,发现报错

  1. Traceback (most recent call last):
  2. File "math.py", line 1, in <module>
  3. File "c:\users\pc\appdata\local\programs\python\python36\lib\site-packages\PyI
  4. nstaller\loader\pyimod03_importers.py", line 627, in exec_module
  5. exec(bytecode, module.__dict__)
  6. File "numpy\__init__.py", line 151, in <module>
  7. File "c:\users\pc\appdata\local\programs\python\python36\lib\site-packages\PyI
  8. nstaller\loader\pyimod03_importers.py", line 627, in exec_module
  9. exec(bytecode, module.__dict__)
  10. File "numpy\ctypeslib.py", line 369, in <module>
  11. File "numpy\ctypeslib.py", line 358, in _get_typecodes
  12. File "numpy\ctypeslib.py", line 358, in <dictcomp>
  13. ModuleNotFoundError: No module named 'numpy.core._dtype_ctypes'
  14. [14572] Failed to execute script myscript

通过在网上搜索,找到了解决办法:需要手工修改编译时生成的myscript.spec文件,把无法加载的库,放到hiddenimports=里面。修改后的文件内容如下:

  1. # -*- mode: python -*-
  2. block_cipher = None
  3. a = Analysis(['math.py'],
  4. pathex=['D:\\MyPythonWorkspaces\\Jason_python'],
  5. binaries=[],
  6. datas=[],
  7. hiddenimports=['numpy.core._dtype_ctypes'],
  8. hookspath=[],
  9. runtime_hooks=[],
  10. excludes=[],
  11. win_no_prefer_redirects=False,
  12. win_private_assemblies=False,
  13. cipher=block_cipher,
  14. noarchive=False)
  15. pyz = PYZ(a.pure, a.zipped_data,
  16. cipher=block_cipher)
  17. exe = EXE(pyz,
  18. a.scripts,
  19. a.binaries,
  20. a.zipfiles,
  21. a.datas,
  22. [],
  23. name='myscript',
  24. debug=False,
  25. bootloader_ignore_signals=False,
  26. strip=False,
  27. upx=True,
  28. runtime_tmpdir=None,
  29. console=True )

修改并保存这个spec文件后,再执行如下命令:

pyinstaller myscript.spec

执行成功,再次在cmd窗口中执行程序,运行正常!

 

pyinstaller的各主要参数说明

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

        -D  –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。

        -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!;

        -c  –console, –nowindowed 使用控制台,无界面(默认);

        -p 表示你自己自定义需要加载的类路径,一般情况下用不到;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值