• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python编译pyc文件的过程解析

    什么是pyc文件

    pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。

    什么是pyo文件

    pyo是优化编译后的程序 python -O 源文件即可将源程序编译为pyo文件

    什么是pyd文件

    pyd是python的动态链接库。

    为什么需要pyc文件

    这个需求太明显了,因为py文件是可以直接看到源码的,如果你是开发商业软件的话,不可能把源码也泄漏出去吧?所以就需要编译为pyc后,再发布出去。当然,pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同的,根据python源码中提供的opcode,可以根据pyc文件反编译出 py文件源码,网上可以找到一个反编译python2.3版本的pyc文件的工具,不过该工具从python2.4开始就要收费了,如果需要反编译出新版本的pyc文件的话,就需要自己动手了(俺暂时还没这能力–),不过你可以自己修改python的源代码中的opcode文件,重新编译 python,从而防止不法分子的破解。

    生成单个pyc文件

    python就是个好东西,它提供了内置的类库来实现把py文件编译为pyc文件,这个模块就是 py_compile 模块。

    使用方法非常简单,如下所示,直接在idle中,就可以把一个py文件编译为pyc文件了。(假设在windows环境下)

    通过IDLE操作如下

    ## 单个文件测试
    >>> import py_compile
    >>> py_compile.compile(r'D:\hello.py')
    'D:\\__pycache__\\hello.cpython-39.pyc'
    >>>
    
    # 单个文件
    import py_compile
    py_compile.compile(r'脚本.py')
     
    # 多个文件
    import compileall
    compileall.compile_dir(r'脚本文件所在目录')
    

    -命令行操作如下

    # 单个文件
    python -m py_compile 脚本.py
     
    # 多个文件
    python -m compileall 脚本文件所在目录
    

    如下图是编译多个脚本(其实是忘记加路径了,直接编译了当前目录,尴…,)

    运行pyc

    python 脚本.py

    _pycache__文件夹

    解释器首先将其编译为字节码(这是过度简化)并将其存储在__pycache__文件夹中。如果你查看那里你会发现一堆文件在项目文件夹中共享.py文件的名称,只有它们的扩展名为.pyc。它们分别是程序文件的字节码编译版本。

    尽管产生了编译文件,但是这些文件与源代码不在同一目录,可能会带来调用问题。因此常常使用如下方式产生同级目录下的.pyc文件:

    python -m compileall -b . # 在脚本所在目录下运行

    发布python 程序

    编译生成pyc文件,建议增加-O优化项

     python3 -O -m compileall -b .

    删除py文件

    find . -name "*.py"|xargs rm -rf

    删除__pycache__目录

    find . -name "__pycache__" |xargs rm -rf

    打成tar包

    cd ..
    tar -cjvf xxx.1.1.0.0.tar.bz2 xxx

    参考文档

    https://docs.python.org/3.9/library/compileall.html

    https://finthon.com/python-pyc/

    到此这篇关于python编译pyc文件的文章就介绍到这了,更多相关python pyc文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Pycharm创建python文件自动添加日期作者等信息(步骤详解)
    • python 解决pycharm运行py文件只有unittest选项的问题
    • Pycharm如何导入python文件及解决报错问题
    • 使用Pycharm(Python工具)新建项目及创建Python文件的教程
    • 解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
    • PyCharm-错误-找不到指定文件python.exe的解决方法
    上一篇:深入浅析Django MTV模式
    下一篇:python装饰器原理源码示例分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python编译pyc文件的过程解析 python,编译,pyc,文件,的,过程,