当前位置:网站首页 > Python编程 > 正文

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



        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文件:

到此这篇py文件打包成exe文件在线(python打包成pyc文件发布)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • python3画函数图像(python如何画函数图像)2025-03-11 14:45:05
  • python删除虚拟环境(python退出虚拟环境)2025-03-11 14:45:05
  • 服务器怎么运行python(服务器怎么运行py文件)2025-03-11 14:45:05
  • python画数学函数图像(python用函数画图)2025-03-11 14:45:05
  • python函数如何返回多个值(python 函数返回多个值怎么接收)2025-03-11 14:45:05
  • python执行py文件(python执行python文件)2025-03-11 14:45:05
  • argparse模块用法(python argparse模块详解)2025-03-11 14:45:05
  • python函数中用于获取用户输入值(python函数中用于获取用户输入值的函数)2025-03-11 14:45:05
  • python函数的基本用法(python 函数)2025-03-11 14:45:05
  • python获取用户输入的一个字符串(python获得用户输入的一个字符串,请输出)2025-03-11 14:45:05
  • 全屏图片