首页 > 编程知识 正文

python生成pyc文件,python如何封装成可调用的库

时间:2023-05-03 19:09:08 阅读:136327 作者:2647

python 编译pyc以及pyc包导入使用现在,为了保护源代码,我们将简单详细地说明如何分发分析后的二进制文件. pyc并将其用于项目。

一.基础概念包:存储模块和子包的文件夹。 软件包通常包含__init__.py文件,也包含__pycache__文件夹。 包含. py文件被解释器解释后的中间字节码(二进制文件)。

模块:可以用作模块的文件有. py、 pyc、 pyo、 pyd、 so和. dll文件。 这里主要介绍. pyc文件。

二.具体生成python解释器解释. py文件时,优先查看是否有对应的最新. pyc文件,如果有,直接加载. pyc文件。 加载之前,检查. pyc文件是否是最新的。

pyc是二进制文件,是在编译py文件之后所生成的文件,并且是byte code。 当py文件变为pyc文件时,加载速度提高。 另外,pyc是跨平台的字节码,由python的虚拟机执行。 pyc的内容是与python的版本相关的、不同版本的编译后的pyc

为什么需要pyc

因为py文件可以直接看到源代码,所以如果你在开发商业软件的话,源代码也不会泄露吧? 所以你需要编译成pyc,然后再发布。 当然,pyc文件也可以反编译。 不同版本编译的pyc文件不同。 根据python源代码提供的opcode,可以从pyc文件中反编译py文件的源代码。 这一步并不重要。

代码编译生成

单个文件的使用非常简单。 如下所示,***.py是需要编译的python源文件。

import py _ compile py _ compile.com pile (“* * *.py ' ) ) ) ) ) ) ),对于多个文件,我们的项目通常是一个迪伊

importcompileallcompileall.com pile _ dir (r '/users/* */python files/' ) Python Shell 命令生成

如果直接从命令运行,则可以看到以下命令没有使用compile ()函数: 这是因为在py_compile模块的main ) )函数中调用了compile )。

python3-m py_compile ****.py

python3-O-m py_compile ****.py

o字节码优化

-m意味着将后面的模块作为脚本运行

-OO表示在优化的同时删除文档字符串

compile ()、compile_dir、compile_path ) )的具体各参数用于什么时,请参阅print py _ compile.com pile._ _ doc

三、具体直接使用python编译源代码时,会生成对应的(.pyc )文件。 这些文件存储在) __pycache__文件夹下。 你可以复印里面的文件。 此时,可以删除对应的).py文件。 此外,还必须修改***.pyc文件的名称。

例如,python的. py文件称为main.py,而生成的. pyc文件称为main.cpython-36.pyc。 使用此模块时,必须将main.cpython-36.pyc更改为main.pyc。 这里的“cyc”

注:从一个环境直接复制到另一个环境会导致一些错误。 我遇到了一个,所以在这里分享。 如果还有其他有趣的bug,请记住消息共享。

importerror : badmagicnumberin ' main ' : b '3 r * * * '

主要原因是编译的python版本与当前运行的python版本不同。 编译成. pyc文件后,尽量保证编译环境和运行环境一致。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。