python文件可以用pyinstaller打包成可执行文件

python文件可以用pyinstaller打包成可执行文件,方便没有安装python编译器的空机器运行

首先pip安装pyinstaller,pip国内有服务器
linux下~/.config/pip/pip.conf

[global]
timeout = 60
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com


windows下 %appdata%/pip/pip.ini
C:\Users\Administrator\AppData\Roaming\pip\pip.ini
然后pip install pyinstaller
 安装成功到需要打包的文件目录执行:

pyinstaller -F --clean testmylib.py --icon=camerahello.ico

这个示例是2个文件mylib.py和testmylib.py,打包只需要testmylib.py,需要的依赖会自动完成
-F 是打包成单一文件,没有这个会放到一个目录下一堆文件
图标是为了个性化
打包成功可执行文件在dist目录下

PyInstaller Extractor是可以提取出PyInstaller所创建的windows可执行文件的资源内容
https://github.com/extremecoders-re/pyinstxtractor
所以请不要放加密信息在里面

继续用现有示例演示:
cd dist
python pyinstxtractor.py testmylib.exe
这就解出pyc文件
继续下载一个反编译pyc的工具,比如uncompyle6
pip install uncompyle
uncompyle是有多个版本的,会自动下载uncompyle6的
然后进入目录dist/testmylib.exe_extracted
uncompyle6 testmylib.pyc>testmylib.py
好吧,得到了原先的testmylib.py文件,太厉害哦了,如果testmylib.py引入的其他python文件,会在更下一层目录找到mylib.pyc

成功实验python3.5 3.7都可以,3.8引入的文件mylib.pyc也顺利,主文件稍有乱码 
由此可以知道,为了安全,推荐使用更新版本,破解毕竟是有了新版发布才会尝试去破解,肯定稍晚一些
另外可以将附加模块编译为动态链接库pyd这样更安全
pip install Cython
然后新建编译脚本build_pyd.py

# -*- coding: utf-8 -*-
from distutils.core import setup
from Cython.Build import cythonize
setup(
  name = 'any words.....',
  ext_modules = cythonize(["mylib.py", ]),
)


python3 build_pyd.py build_ext --inplace
然后就编译出mylib*.pyd,如果有多余字符可以重命名,python原则是优先导入pyd,所以源文件mylib.py不用删除
运行 打包都可以,反编译下级目录没有mylib.pyc,testmylib.pyc主目录有了一个 mylib.pyd 这个格式的反编译少见,暂时安全了

----------------------------

Cython编译py在linux下生成so,window下生成pyd
 windows下提示“Unable to find vcvarsall.bat”的问题
需要vc++的库,进入python控制台
import sys
sys.version 能看到本python是哪个vc++版本编译出来的
python3.7 msc v.1914   Visual Studio 2017 version 15.7      vc++版本是    14.14
https://blog.csdn.net/aeu9737/article/details/101927250
用Microsoft Visual C++ Build Tools.exe下载工具安装了win10sdk


版权声明:本文为qiaozhangchi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。