py文件打包成exe文件在线(python打包成pyc文件发布)

py文件打包成exe文件在线(python打包成pyc文件发布)pyinstaller 直接打包的 exe 文件内部包含了 Python 解释器和 pyc 文件 这些 pyc 文件是 Python 源代码的字节码版本 虽然 pyc 文件不是源代码 但是可以通过反编译工具还原成 Python 源代码 使用 Cython 将关键代码编译成二进制代码 这可以一定程度上提高反编译的难度 一 预期目的 1 将 python 项目工程编译为 pyd 最后打包成一个 exe 可执行文件 2

大家好,我是讯享网,很高兴认识大家。



        pyinstaller直接打包的exe文件内部包含了Python解释器和pyc文件,这些pyc文件是Python源代码的字节码版本。虽然pyc文件不是源代码,但是可以通过反编译工具还原成Python源代码。使用Cython将关键代码编译成二进制代码,这可以一定程度上提高反编译的难度。

一、  预期目的

        1.  将python项目工程编译为pyd,最后打包成一个exe可执行文件;

        2.  项目可能包含多个层级,打包需要包含需要的每个层级的源码文件,并保证运行调用时无误。

二、  处理步骤

        1.  将Python项目编译成pyd文件,通常会使用Cython这个工具。Cython可以将Python代码编译成C或C++代码,然后再编译成pyd文件(Windows)或.so文件(Linux)。

                安装执行命令:pip install Cython

        2.  然后需要为Python项目创建一个setup.py文件。这个文件会告诉Cython如何编译你的Python项目。以下是例子(这种写法可以保留工程项目的层级关系):

source_files 是需要打包的文件


讯享网

language_level 用于指定Cython应该使用哪个Python版本的语法和语义来编译.pyx文件

        3.  运行以下命令开始编译

                编译命令:python setup.py build_ext –inplace

        4.  执行完成后,可以看到工程目录下生成了source_files 目录中制定文件的.c以及.pyd文件

        5.  再执行pyinstaller打包命令(xxx.py文件是你程序的入口文件;如果需要包含子文件夹或者目录,命令需要多加参数,见Q&A2),此时即可在dist文件夹下找到生成的exe文件

                打包命令:pyinstaller -F xxx.py

三、  Q&A

1.  ModuleNotFoundError: No module named ’aaa’,报错信息中的aaa是某个python文件中导入的第三方依赖。

        原因:pyinstaller 无法分析pyd文件,不知道pyd文件里边导入了什么第三方的依赖

        解决:将所有需要导入的第三方依赖在入口文件xxx.py中集中import

2.  ModuleNotFoundError: No module named ’bbb’,报错信息中的bbb是你自己工程项目的子文件或子文件夹。

        原因:如果包含多个层级的子文件夹或者文件,需要添加参数–add-data,否则不会被打包进去

        解决:需要添加参数–add-data,是一个分号分隔的字符串,前半部分是你的数据文件的路径,后半部分是这些文件在打包后的程序中的路径。

可以通过以下函数获取当前路径下所有的pyd文件:

小讯
上一篇 2025-05-24 15:45
下一篇 2025-04-16 21:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/151163.html