Window下:自带python编辑器的wxpython项目发布打包exe
环境:w764 Pyinstaller3.1.1 Python2.7.15 wxPython2.9.1 matplotlib2.2.3
加密方式有两种,一种是使用pyinstaller与pyexe等工具进行打包生成exe,一种是将py转成pyc进行保护。
由于使用过Pyinstaller进行打包的PYQT项目,优先使用pyinstaller进行打包,网上py2exe方式的经验也比较多,首先进行Pyinstaller的尝试。
Pyinstaller
由于本来项目是开源的,给出的是源码加Python2.7.2版本的Python。这里重新安装了wxpython,但是wxpython新版本与旧版本是不兼容的,pip无法安装wxpython2.8版本,只能去wxpython官网下载2.9的exe进行覆盖安装。同样的numpy是由matplotlib提供的,最新的只支持python3.5及以上,只能下载指定版本(2.2.3对应的wxpython只能是2.9及以上)等
安装Pyinstaller,python2版本的首字母是小写的
pip install pyinstaller
进行打包
pyinstaller -F main.py
打包成功,将一些静态的图片与其他所需的文件放在main.exe同级目录下。运行:
问题:路径错误,到一个其他路径去找程序所需的文件,好多要修改的。
------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------
由于自带编辑器,直接python.exe main.py的形式进行调用执行,采用将文件加密的方式更加简单,易于升级维护。
PYC方式
pyc是什么?就是.py编译后的结果c:compile。
生成方式:
python -m foo.py
或者:
import py_compile py_compile.compile('foo.py')
一键生成该文件夹下所以py的pyc版本:
import compileall compileall.compile_dir(r'/path')
然后把.py删除,直接python main.pyc即可。不是专业人士是不太可能解密的。但是安全性还不是很高,所以还有一种pyd的做法:
pyd
.pyd文件本质就是window下的dll库一样的存在,他将一个python文件转成.c中间件,然后将.c文件编译成.pyd库文件,使用上与pyc一样可以导入,当做.py使用。
基础步骤如下:
1.添加文件c:\Python27\Lib\distutils\distutils.cfg: 内容为: [build] compiler = msvc 2. pip install Cython :下载不成功就去官网下载.whl 3.安装VCForPYthon27.msi然后将Lib/distutils/msvc9compiler.py文件中的find_vcvarsall函数直接返回: def find_vcvarsall(version): """Find the vcvarsall.bat file At first it tries to find the productdir of VS 2008 in the registry. If that fails it falls back to the VS90COMNTOOLS env var. """ return r'C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat' vsbase = VS_BASE % version 。。。。
然后创建一个简单的脚本setup.py:
from distutils.core import setup from Cython.Build import cythonize setup( name = 'Hello world app', ext_modules = cythonize("dll.py"), )
最后一步生成:
python setup.py build_ext --inplace
这里给一个详细点的参考网址。
————————————————
版权声明:本文为CSDN博主「香道人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37887537/article/details/83095623