使用 pyinstaller 打包 python 程序

最近因为工作需要,所以接触到了这个东西,不过因为自己以前很少写 p y t h o n python python,所以被坑了好久。

首先需要明确说明的是,版本问题, p y t h o n 2 python2 python2 p y t h o n 3 python3 python3 都有自己对应的 p y i n s t a l l e r pyinstaller pyinstaller 版本。

安装 p y t h o n 3 python3 python3 对应的 p y i n s t a l l e r pyinstaller pyinstaller 比较简单,直接通过 p i p pip pip 就行,可能对网络有点小要求:

pip install pyinstaller

至于 p y t h o n 2 python2 python2 的需要找到 p y i n s t a l l e r   2.1 pyinstaller\ 2.1 pyinstaller 2.1 的源码包进行安装( p y i n s t a l l e r 3 pyinstaller3 pyinstaller3 也可以通过源码安装):

wget https://pypi.python.org/packages/source/P/PyInstaller/PyInstaller-2.1.zip#md5=3eb18a454311707ab7808d881e677329
tar -zxv PyInstaller-2.1.zip
cd Pyinstaller-2.1/Pyinstaller-2.1
python setup.py build
python setup.py install

安装之后,并不能直接打包,需要在源码中导入几个模块,否则可能会报错:

import six
import packaging
import packaging.version
import packaging.specifiers
import packaging.requirements

然后通过命令 pyinstaller [opts] &lt;scriptname&gt; [ &lt;scriptname&gt; ...] | &lt;specfile&gt; \text{pyinstaller [opts] &lt;scriptname&gt; [ &lt;scriptname&gt; ...] | &lt;specfile&gt;} pyinstaller [opts] <scriptname> [ <scriptname> ...] | <specfile> 即可打包。

这里 o p t s opts opts 比较常用的是 − F -F F,可以将多个文件打包成单个二进制文件,第一个 s c r i p t n a m e scriptname scriptname 是入口程序,后边可以通过 − p -p p 添加需要打包的 . p y .py .py 文件,通过 − − h i d d e n − i m p o r t --hidden-import hiddenimport 引入自建模块,注意不能打包资源文件,打包成功后会生成 b u i l d build build d i s t dist dist 目录,二进制可执行文件便在 d i s t dist dist 目录下,将资源文件放置在二进制可执行文件同个目录下即可。 p y i n s t a l l e r pyinstaller pyinstaller 工具打包后会生成一个 . s p e c .spec .spec 文件,不加 | &lt;specfile&gt; \text{| &lt;specfile&gt;} | <specfile> 的话默认与入口程序同名。

E x : Ex: Ex:

pyinstaller -F A.py -p b.py -p c.py --hidden-import b --hidden-import c

这里最后会生成一个 d i s t / A dist/A dist/A 的二进制可执行文件,将资源文件都移动过来以后,双击可直接运行。

全部评论

相关推荐

躺尸修仙中:因为很多92的也去卷中小厂,反正投递简历不要钱,面试不要钱,时间冲突就推,不冲突就面试积累经验
点赞 评论 收藏
分享
诨号无敌鸭:恭喜佬,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务