序
最近根据公司生产需求写了个小脚本,想打包成exe文件分发给其他人使用,但又担心代码本反编译而泄露信息,所以花了一整天时间,磕磕绊绊的,终于搞定了!来之不易的“成果”需要总结和记载(毕竟耗费了生命中一天之久的时长)。
目录
一、python如何打包成exe (常规打包方法)
二、反编译exe文件
三、防止反编译方式生成exe
正文
一、python如何打包成exe (常规打包方法)
1.1首先你要先把自己的程序写好,在pycharm中运行正常。我的程序文件目录结构如下图所示:
1.2直接控制台输入命令:pyinstaller -p C:\Users\Administrator\PycharmProjects\ExportCustomerInfo\venv\Lib\site-packages -i v6.ico -F main.py
此句解释如下:
这里输入自己的第三方引用包的路径(不懂的看我上一篇文章);
这里是将要生成exe的图标设置(友情提示:非ico格式的图片会出错哦)
这里是你要发布的主程序文件
1.3运行结果如下:Building EXE from EXE-00.toc completed successfully.代表成功!
1.4新产生的文件及文件夹如下,请到dist文件夹里去找exe双击运行效果如下:
二、反编译exe文件
2.1先去网上下载一个pyinstxtractor.py的文件,将其和exe文件放到一个新文件夹里面如12345。
下载地址:https://download.csdn.net/download/hmy123cq3/16231988
2.2在电脑cmd命令行,切换到12345这个文件夹路径里并执行如下代码:
python pyinstxtractor.py main.exe
执行效果如下:
2.3可以到如下路径查找文件,可见很多pyc文件,其中我们的机密代码就在这些文件内,反编译pyc文件是很容易的可以借助工具或在线反编译,这里就不详细介绍了。
三、防止反编译方式生成exe
3.1首先,清理环境,将一、二两步产生的文件,全部删除掉。我删除的文件如下图所示:
3.2然后,创建一个py文件,命名为create_pyd.py,然后在此文件中敲入如下代码:
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 29 13:33:20 2018
@author: Li Zeng hai
python build_pyd.py build_ext --inplace
"""
from distutils.core import setup
from Cython.Build import cythonize
setup(
name='any words.....',
ext_modules=cythonize(["jr_customer_excel.py", "send_mail.py"]), )
注意最后一行代码了吗,ext_modules=cythonize(["jr_customer_excel.py", "send_mail.py"])...,这里面的数组就是你想要编译成pyd格式的文件,有多少就添加多少。
3.3然后在pycharm控制台执行如下代码:
python create_pyd.py build_ext --inplace
如果执行以上代码出错提示没有Cython,执行如下命令进行安装:
pip install Cython -i https://pypi.tuna.tsinghua.edu.cn/simple
结果如下图所示:
接着将这几个pyd后缀的文件名中的cp39-win_amd64部分去掉,去掉后如下图所示:
3.4执行步骤一中的打包exe(常规方法),即直接执行代码:
pyinstaller -p C:\Users\Administrator\PycharmProjects\ExportCustomerInfo\venv\Lib\site-packages -i v6.ico -F main.py
执行结果如下图所示,Building EXE from EXE-00.toc completed successfully.代表成功了!
此步骤需要注意的一个坑就,main.py顶部的引用,已经要把其他py文件里的引用都加上,不然会提示找不到模块,什么原因我也不知道,我是按错误提示操作的,如下所示:
3.5到dist文件夹里运行exe文件看看成果吧!
3.5重复执行一下步骤二作为校验,结果如下所示:
此时,已经找不到这里面的两个文件了。
至此,本文全部完毕!