zoukankan      html  css  js  c++  java
  • 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:Python27Libdistutilsdistutils.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:UsersAdministratorAppDataLocalProgramsCommonMicrosoftVisual C++ for Python9.0vcvarsall.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

  • 相关阅读:
    实例!使用Idea创建SSM框架的Maven项目
    springboot开发中的领域模型pojo
    JDK源码阅读:Object类阅读笔记
    DevSecOps: JIRA、Confluence工具、JIRA插件-Xray、eazybi、FishEye、Crucible、jenkins
    MySQL监控及优化
    二叉树 红黑树 B树 B+树 理解
    mysql高性能分页语句_如何优化Mysql千万级快速分页
    使用.Net MinIO SDK 踩的坑
    Windows下Minio介绍、安装及使用、密码修改
    使用docker mediawiki,搭建网页wiki
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/14843819.html
Copyright © 2011-2022 走看看