• 关于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源码,而且保证可以正常执行。  

  • 相关阅读:
    C# Winform 运行异常 CefSharp.core.dll 找不到指定的模块
    WCF TCP通信方式 通过IIS承载调试
    [译]Modern Core Graphics with Swift系列
    博客搬家
    [ios] 定位报错Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"
    [IOS] 'Double' is not convertible to 'CGFloat'
    [IOS]swift 使用AVOS的API
    [IOS]使用了cocoapods 抱错Pods was rejected as an implicit dependency for ‘libPods.a’ because its architectures ......
    [IOS]cocoapos 两个ruby源的对比
    [IOS]Swift 遍历预制的本地资源文件
  • 原文地址:https://www.cnblogs.com/aijingyi/p/6795685.html
Copyright © 2020-2023  润新知