Window下:自带python编辑器的wxpython项目发布打包exe
发布日期:2021-06-30 10:12:38 浏览次数:3 分类:技术文章

本文共 2090 字,大约阅读时间需要 6 分钟。

最后更新“2018-10-17”

环境: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_compilepy_compile.compile('foo.py')

一键生成该文件夹下所以py的pyc版本:

import compileallcompileall.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 = msvc2. pip install Cython :下载不成功就去官网下载.whl3.安装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 setupfrom Cython.Build import cythonize setup(  name = 'Hello world app',  ext_modules = cythonize("dll.py"),)

最后一步生成:

python setup.py build_ext --inplace

这里给一个详细点的。

 

转载地址:https://islet.blog.csdn.net/article/details/83095623 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python:file.read()与s= file.read()使用上的区别
下一篇:Python3 configparser模块的安装、基础读写ini文件和字典的互转

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月19日 21时41分56秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章