vs2017如何打包python项目,生成exe文件

vs2017如何打包python项目,生成exe文件,第1张

可以使用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程序代码混淆、编译、打包、运行(桌面程序防破解向)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10137479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存