将python程序打包为可执行文件
使用pyinstaller库进行打包
对于pyinstaller
库的使用,主要在三个命令上:
-
Pyinstaller -F setup.py
-F 是打包单个文件的,-D是打包多个文件,在dist中生成很多依赖文件
将程序打包成可执行文件,但是图标是默认的,并且会出现控制台窗口,可以在首次打包的时候,在控制台执行,会显示有程序执行的日志打印,若是存在错误,会直接在其中显示出来。
在其中就标明了缺少
charomedriver
驱动 -
Pyinstaller -F -w setup.py
-w
参数是标明打包后执行时不显示控制台,只对windows有效。 -
Pyinstaller -F -i xx.ico setup.py
-i
是指定图标代替默认图标作为可执行文件的标志
打包命令执行之后,生成三个文件夹:
. │ chromedriver.exe │ get_gmsc.py │ get_gmsc.spec │ panda.ico │ ├─build │ └─get_gmsc │ Analysis-00.toc │ base_library.zip │ EXE-00.toc │ get_gmsc.exe.manifest │ PKG-00.pkg │ PKG-00.toc │ PYZ-00.pyz │ PYZ-00.toc │ warn-get_gmsc.txt │ xref-get_gmsc.html │ ├─dist │ get_gmsc.exe │ └─__pycache__ get_gmsc.cpython-37.pyc
其中__pycache__
、build
、dist
是打包生成的三个文件夹,get_gmsc.spec
是生成的文件,其中在dist
中的是生成我们需要的可执行文件。
打包selenium依赖文件
最简单的解决方式就是直接将你使用的浏览器驱动如chromedriver.exe
放置到于可执行文件同一个位置,这是一种最简单可行性最高的方法。
对于不行单独再带有chromedriver.exe
文件的想法,的确应该有解决办法,其中存在有
-
使用
-p
设置导入路径,多个路径可以使用路径分隔符(win用分号,Linux用冒号)指定目录,也可以使用多个-p
参数但是这个对``chromedriver.exe`不起作用
-
在
.spec
文件中设定参数,将驱动包含进去,这样生成的可执行文件会变大几兆,参照Pyinstaller 打包selenium项目 生成包含chromedriver 的exe文件,但是我尝试了没有成功。Pyinstaller打包用spec添加资源文件这个将资源放在
.spec
文件的另一个参数中,但是我同样没有成功
对于隐藏需要的资源文件,能够直接链接到它的,有两种方式
- Pyinstaller打包Selenium脚本为exe文件执行问题在
.spec
文件中data
参数中标明资源名称与文件位置等 - 在程序文件中指定使用的文件位置,如Python +selenium Pyinstaller打包之依赖文件
另外-w
并不能解决selenium
执行时出现控制台窗口的问题,需要库所在的文件Lib\site-packages\selenium\webdriver\common\service.py
,其中76行附近的位置添加creationflags=134217728
即可解决。
以上方式对使用helium
也适用,同样是修改selenium