zoukankan      html  css  js  c++  java
  • 关于python编译的一点小结

    大家都知道python是脚本语言,源码可以直接执行,有时需要提高执行效率或者保密(因为有时候不想让使用人看到源码文件),那就涉及到python编译了,那么该如何做呢? 有两种方法可以做到。 1、一种是直接使用命令编译成pyc或者pyo文件。 新建test.py文件,代码如下:

    #!/usr/bin/python
    print "hello world!"

    编译成pyc文件使用命令:

    python -m py_compile test.py

    -m py_compile是加载py_compile编译模块的意思,可以看到当前目录下生成了test.pyc文件 编译成pyo文件使用命令:

    python -O -m py_compile test.py

    可以看到当前目录下生成了test.pyo文件。 这时使用vim打开文件时可以看到里面是乱码,可以达到部分源码隐藏的目的,说是“部分”是因为仍然可以看到部分源码,使用反编译软件也可以看到源码。但总可以吓唬一下小白了。 2、另一种是使用pyinstaller工具编译成可执行程序 使用pip install pyinstaller命令安装pyinstaller工具。此工具可以把python文件打包成二进制的包。 方法:

    pyinstaller -F test.py

    -F命令是为了打成一个包,把一些库文件也放到一起。不用的话可执行文件和库文件分开,不利于使用。 可以看到当前目录下生成了distbuild两个文件夹。dist下有test二进制文件。此方法可以达到完全加密的目的。 总结:第一种方法比较简单易用,但是只能部分加密。第二种方法安全可靠,完全加密。但是两种方法都存在一个问题,就是兼容性太差,使用python2.6编译的程序放到2.7版本上就不能执行了。可执行文件也是这样,在iSoft Server 4.0上编译的可执行文件到iSoft Server 3.2上也不能执行了。所以打算在不同平台使用的python脚本这种方法不太好用,python兼容性差是个通病,还是c/c++好呀。 我最近就是打算加密一个python文件,最后因为兼容性的问题只好作罢了。不知道大家有没有更好的方法呢?要求加密python源码,而且保证可以正常执行。  

  • 相关阅读:
    sql子查询
    java中entity和object的区别
    eclipse F3可以查询某个方法的具体定义
    SQL语句的MINUS,INTERSECT和UNION ALL
    jquery 循环获取checkBox的值,以及对复选框选中,取消,操作按钮
    jQuery 函数位于一个 document ready 函数中
    <script>的用法
    jquery ui-----弹出窗口 dialog
    util包就是用来放一些公用方法和数据结构的
    BigDecimal
  • 原文地址:https://www.cnblogs.com/aijingyi/p/6795685.html
Copyright © 2011-2022 走看看