目前手上有一个python+pyqt的项目需要打包,所以查了一下打包的方法。下面介绍一下具体步骤:

python打包有很多方法,py2exe,pyinstaller等等(其实我也就知道这两种)。py2exe要自己写setup.py,

太麻烦。用了pyinstaller。

1.用命令行安装pyinstaller:(要在工程所在的环境里安装)

pip install pyinstaller

        如何进入自己工程所在的环境,我使用anaconda3的tensorflow-cpu。而F:\python\label_tensorflow_cpu

就是我的工程所在目录。接着输入pip install pyinstaller,我安装过了,就不安装了。

python打包成dll文件 python项目打包dll_pyinstaller

2.然后用pyinstaller打包,就是运行以下命令。(pyinstaller的命令看这篇)

pyinstaller -D -i ./icons/AutoLabel1.ico labelImg.py

         这时成功的话会显示successfully。

python打包成dll文件 python项目打包dll_python打包成dll文件_02


         

3.工程的根目录(F:\python\label_tensorflow_cpu)下面会多出两个文件夹:build & dist。

python打包成dll文件 python项目打包dll_python打包成dll文件_03

         

4.点开dist找到.exe,双击运行会发现报错或者闪退。这是缺少运行时所需的包。

5.找到python的包,全部复制到根目录底下(F:\python\label_tensorflow_cpu\dist\labelImg)。

我的python包是在anaconda3下自己创建的tensorflow-cpu环境,所以去目录(D:\Anaconda3\envs\

tensorflow-cpu\Lib\site-packages\)下找。

python打包成dll文件 python项目打包dll_anaconda_04

 

6.然后双击dist中的exe(F:\python\label_tensorflow_cpu\dist\labelImg\labelImg.exe),即可运行。

python打包成dll文件 python项目打包dll_python打包成dll文件_05

         

此外我在看别人教程的时候,都要求安装pywin32(

教程)。注意一点,pywin32有32位和64位之分,这个对应的是python的版本。

 

 

 

 

 

 

         

         对于自定义dll的打包,有很多坑,下面一一介绍:

坑一:自定义的dll,导入时用ctypes.windll.LoadLibrary(trackDllPath),这里的是我dll所在的位置。这里原本

           放的是相对路径,结果自己的电脑运行没有问题,在别人电脑上如何都不能运行。最后我将其放在根

           目录底下,即可运行。

坑二:如果你的dll生成txt文本等数据。这时根据你cmd的路径不同,它生成的位置也不同。如下面两张图,

           生成的txt就在不同的路径底下,就是由于在不同路径的cmd下打开。这个坑很隐蔽,我就是之前已经

           打包好可以使用了,突然发现找不到dll生成的txt了。

坑三:打包好的软件在其他电脑上运行,需要安装vs2015的库。这个坑了我很长时间。

python打包成dll文件 python项目打包dll_dll_06

 

python打包成dll文件 python项目打包dll_dll_07

         最后,最好把exe拉进cmd中运行,这样程序出错,可以在cmd中看到,不会闪退。还有其他新的错误

可以根据报错修改。