python打包后运行不了怎么解决?

Python015

python打包后运行不了怎么解决?,第1张

python文件打包后无法正常运行的问题及解决方法介绍:

打包之前的文件的结构如下,可以看到ini文件和其他py文件待在一起:

接下来在当前目录文件夹里面打开cmd,输入pyinstaller -F test.py进行打包

打包以后的目录结构是这样的:

打开dist文件夹,可以看到我们打包出来的exe文件:

击exe文件,发现程序闪退,没有正常工作。

解决方法:

将ini文件,放在和exe文件同一个文件夹下,就像下图:

更多Python知识请关注Python自学网

1.安装环境

首先我们要安装pip,命令如下:

使用的工具是 pyinstaller ,打开终端输入sudo pip install pyinstaller

2.打包程序

首先在打包之前检查一下我们的py文件是否可以正常执行,确认无误后进行打包 pyinstaller -F car_tkinter.py          或者 python3 -m PyInstaller -F main.py

3.执行文件

进入我们打包存放的文件夹,打开终端,执行语句 ./car_tkinter       或者 nohup ./car_tkinter>data.log &

像Python这种解释性的语言,要想私有化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。

虽然做不到尽善尽美,但是对代码进行混淆,增加一点破解的难度,或许能规避一些泄露的风险。

本次演示环境:linux

确保要发布的包根目录("demo")中有__main__.py文件,这个是程序执行入口。

编译

批量改名.pyc文件

移动.pyc文件

清理.py文件

清理__pycache__文件夹

打包成zip

运行时只要将zip文件作为参数即可

最终整合脚本

调用方式

对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。

所以对于混淆程度的取舍,要视工程的规模而定。

2.1 混淆工具pyminifier

在原来的工具 pyminifier上修复了几个bug。

安装:

python3 安装

或者clone下来,自行安装

使用例子

2.2 源码变更

不同的配置对于源码的要求不同,以下是笔者踩过的坑。

其他混淆想法

结合混淆、编译和打包,尝试出以下发布脚本。

主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移动到dist,发布dist即可。

混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解。