可以使用PyInstaller把python程序打包成exe,安装使用pip install pyinstaller,使用时,使用pyinstaller打包,参数如下
-F, –onefile 打包一个单个文件,如果你的代码都写在一个py文件的话,可以用这个,如果是多个py文件就别用
-D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-K, –tk 在部署时包含 TCL/TK
-a, –ascii 不包含编码在支持Unicode的python版本上默认包含所有的编码
-d, –debug 产生debug版本的可执行文件
-w,–windowed,–noconsole 使用Windows子系统执行当程序启动的时候不会打开命令行(只对Windows有效)
-c,–nowindowed,–console
使用控制台子系统执行(默认)(只对Windows有效)
pyinstaller -c xxxxpy
pyinstaller xxxxpy --console
-s,–strip 可执行文件和共享库将run through strip注意Cygwin的strip往往使普通的win32 Dll无法使用
-X, –upx 如果有UPX安装(执行Configurepy时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)
-o DIR, –out=DIR 指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下
-p DIR, –path=DIR 设置导入路径(和使用PYTHONPATH效果相似)可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源
–icon=<FILEICO>
将fileico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标 pyinstaller -i ico路径 xxxxxpy
–icon=<FILEEXE,N> 将fileexe的第n个图标添加为可执行文件的资源(只对Windows系统有效)
-v FILE, –version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
-n NAME, –name=NAME 可选的项目(产生的spec的)名字如果省略,第一个脚本的主文件名将作为spec的名字
我也遇到了这个问题,我是这样解决的。你用python调用bat或者exe文件时,一般调用 方式如下:ossystem(被调用程序)对吧,这样就会因为调用了系统shell而出现黑框。我的解决方法是:ospopen(被调用程序)这样就把程序作为后台调用了,而且能根据popen的返回结果来获得程序的返回值。
像Python这种解释性的语言,要想私有化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。
虽然做不到尽善尽美,但是对代码进行混淆,增加一点破解的难度,或许能规避一些泄露的风险。
本次演示环境:linux
确保要发布的包根目录("demo")中有__main__py文件,这个是程序执行入口。
编译
批量改名pyc文件
移动pyc文件
清理py文件
清理__pycache__文件夹
打包成zip
运行时只要将zip文件作为参数即可
最终整合脚本
调用方式
对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。
所以对于混淆程度的取舍,要视工程的规模而定。
21 混淆工具pyminifier
在原来的工具 pyminifier上修复了几个bug。
安装:
python3 安装
或者clone下来,自行安装
使用例子
22 源码变更
不同的配置对于源码的要求不同,以下是笔者踩过的坑。
其他混淆想法
结合混淆、编译和打包,尝试出以下发布脚本。
主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移动到dist,发布dist即可。
混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解。
额,首先,python是一个解释型语言,并不像c++之类的编译型语言。c++等可以在没有任何解释器的帮助下独立运行,所以c++作为开发 *** 作系统的首选语言之一,而python和java之类的,必须在解释器之上运行,也就是说你没法脱离开 *** 作系统,因为你的程序必须在 *** 作系统上的解释器中运行。写一个 *** 作系统非常麻烦,需要从头兼容文件系统,兼容启动引导之类的,不是简简单单就能做出来的。如果真的想尝试下建议使用汇编或者C语言,并且熟知 *** 作系统的基本原理。
以上就是关于vs2017如何打包python项目,生成exe文件全部的内容,包括:vs2017如何打包python项目,生成exe文件、如何打包和分发Python应用程序、Python程序代码混淆、编译、打包、运行(桌面程序防破解向)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)