使用pyinstaller将python项目打包成exe

1、pyinstaller的安装

使用pip安装命令:pip install pyinstaller

2、pyinstaller的使用

使用命令:pyinstaller -F 文件名.py
其中常用参数有(参考自这篇博客):

  • -F:表示生成单个可执行文件
  • -w:表示去掉控制台窗口
  • -p:表示自己自定义需要加载的类路径,一般用不到
  • -i:表示可执行文件的图标

3、可能会遇到的问题

a. AttributeError: ‘str’ object has no attribute 'items’

类似的问题还有ModuleNotFoundError: No module named 'setuptools._vendor',这个问题与setuptools的版本有关,应使用最新版本的setuptools:pip install -U setuptools

b. ModuleNotFoundError: No module named 'numpy.core._dtype_ctypes’

这个问题发生在打包成功后运行exe文件出错(提示:如果双击运行exe文件可能看不到错误信息,可以使用命令行来运行exe文件)。类似的可能还有ModuleNotFoundError: No module named 'sklearn.neighbors.typedefs',可通过在.spec文件中添加hiddenimports来解决。也可以通过在命令行中指定hiddenimport来解决。
通过spec文件解决
1)打开.spec文件,找到Analysis代码块(一般在开头部分),在里面添加hiddenimports:hiddenimports=['numpy.core._dtype_ctypes'](哪个module找不到就填哪个);
2)在命令窗口使用命令pyinstaller 文件名.spec来进行打包

通过命令行来指定hiddenimport【推荐】
一般遇到打包出错,建议将打包过程拆成两部分来操作:
1)生成.spec文件
pyi-makespec --noupx -F --hidden-import=numpy.core._dtype_ctypes 文件名.py
上面这句命令会将.py文件转化为.spec文件,其中--noupx表示不使用upx压缩。多个hiddenimport可添加多个--hidden-import
2)生成exe
在生成的.spec文件目录下执行以下语句即可
pyinstaller 文件名.spec

你可能感兴趣的:(Python)