关闭

Python文件打包:解放你的代码

发表于:2023-11-14 09:28

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:山猫    来源:python学习之旅

  在Python开发中,将代码和依赖项打包成可执行文件或独立软件包是一个重要的任务。Python提供了许多强大的文件打包工具,使我们能够将Python项目转化为独立的可执行文件或安装包,方便部署和分发。
  本文将详细介绍几个常用的Python文件打包工具,并展示它们的使用方法和优势。通过了解这些工具,你将能够更好地选择适合你项目的文件打包方式,提高代码的独立性和可移植性。
  一、什么是Python文件打包工具?
  Python文件打包工具是一种可以将Python源代码文件打包成可执行文件的工具,这样使用者就可以直接运行Python文件打包工具是一种可以将Python源代码文件打包成可执行文件的工具,这样使用者就可以直接运行这个可执行文件,而无需安装Python环境或调用解释器来执行源代码。
  二、PyInstaller工具详解:
  1. 官方文档
  pyinstaller 官网:https://pypi.org/project/pyinstaller/
  pyinstaller 官方文档:https://pyinstaller.readthedocs.io/
  2. 安装和使用
  PyInstaller 是一个 Python 应用程序打包工具,它可以将 Python 程序打包为单个独立可执行文件。
  要使用 PyInstaller 打包 Python 程序,需要在命令行中使用 pyinstaller 命令。命令的基本语法如下:
  pyinstaller [options] script[.py]
  其中,script 是要打包的 Python 脚本文件的文件名,可以带 .py 后缀。options 是可选的命令行选项,可以用来指定打包的方式、输出文件的位置等。
  下面是一些常用的命令行选项:
  -F:将所有文件打包为一个单独的可执行文件。
  -D:将所有文件打包为一个目录,包含可执行文件和所有依赖的文件。
  -c:将程序与命令提示符结合在一起,以便在命令提示符下运行。
  -d:将调试信息打包进可执行文件中。
  –onefile:将所有文件打包为一个单独的可执行文件。
  -o:指定输出文件的位置。
  -w:打包为窗口文件。
  举个例子,如果要使用 PyInstaller打包名为 script.py 的 Python 脚本文件,并将所有文件打包为一个单独的可执行文件,可以使用以下命令:
  pyinstaller -F script.py
  可以使用以下命令来指定可执行文件的名称:
  pyinstaller script.py -n my_script
  为程序加了个图标:
  Pyinstaller -F -i demo.ico deno.py
  注意:打包时,需要进入到存在py文件的目录,然后进入终端界面进行打包。
  3. 文件打包
  下面给出一个基于pyinstaller的简单示例,首先代码非常简单,使用turtle去画一棵樱花树,
  import turtle
  import random
  from turtle import *
  from time import sleep
  # 画樱花的躯干(60,t)
  def tree(branchLen, t):
      sleep(0.0005)
      if branchLen > 3:
          if 8 <= branchLen <= 12:
              if random.randint(0, 2) == 0:
                  t.color('snow')  # 白
              else:
                  t.color('lightcoral')  # 淡珊瑚色
              t.pensize(branchLen / 3)
          elif branchLen < 8:
              if random.randint(0, 1) == 0:
                  t.color('snow')
              else:
                  t.color('lightcoral')  # 淡珊瑚色
              t.pensize(branchLen / 2)
          else:
              t.color('sienna')  # 赭(zhě)色
              t.pensize(branchLen / 10)  # 6
          t.forward(branchLen)
          a = 1.5 * random.random()
          t.right(20 * a)
          b = 1.5 * random.random()
          tree(branchLen - 10 * b, t)
          t.left(40 * a)
          tree(branchLen - 10 * b, t)
          t.right(20 * a)
          t.up()
          t.backward(branchLen)
          t.down()
  # 掉落的花瓣
  def petal(m, t):
      for i in range(m):
          a = 200 - 400 * random.random()
          b = 10 - 20 * random.random()
          t.up()
          t.forward(b)
          t.left(90)
          t.forward(a)
          t.down()
          t.color('lightcoral')  # 淡珊瑚色
          t.circle(1)
          t.up()
          t.backward(a)
          t.right(90)
          t.backward(b)
  def main():
      # 绘图区域
      t = turtle.Turtle()
      # 画布大小
      w = turtle.Screen()
      t.hideturtle()  # 隐藏画笔
      t.getscreen().tracer(5, 0)
      w.screensize(bg='wheat')  # wheat小麦
      t.left(90)
      t.up()
      t.backward(150)
      t.down()
      t.color('sienna')
      # 画樱花的躯干
      tree(60, t)
      # 掉落的花瓣
      petal(200, t)
      t = turtle.getscreen()
      t.getcanvas().postscript(file="tree.eps")
      w.exitonclick()
  if __name__ == "__main__":
      main()
  效果是这个样子的,如下所示:
  然后使用打包工具进行文件打包:
  pyinstaller -F main.py
  然后在main.py同级目录就会多两个文件夹,分别是build和dist:这里重点关注dist目录,生成的可执行文件就在于此,如下所示:
  点击main.exe即可看到上述python代码运行的一样的效果。
  4. 反编译
  使用pyinstaller打包Python文件成exe可执行文件的确可以增加反编译的难度。然而,需要注意的是,尽管这会使过程相对困难,但并不能从根本上阻止反编译行为。
  对于有一定安全性要求的情况,可以考虑采用pyinstaller的加密打包功能,通过「添加密钥对生成的exe文件」进行保护,使其更难被破解。
  使用pyinstaller的加密打包功能,可以通过在命令行中添加--onefile和--key参数来实现。具体操作如下:
  (1) 打开命令行窗口(Windows下为CMD或PowerShell,Mac和Linux下为终端)。
  (2) 输入以下命令:
  pyinstaller --onefile --key=your_key your_script.py
  其中,your_key是你自定义的密钥,用于加密生成的exe文件;your_script.py是你要打包的Python脚本文件名。
  (3) 等待打包完成,会在当前目录下生成一个名为dist的文件夹,里面包含了加密后的exe文件。
  需要注意的是,加密打包只能提高反编译的难度,但并不能保证完全防止反编译。如果需要更高级别的保护,可以考虑使用其他工具或方法。
  此外,将Python代码转换为C代码再编译成pyd库文件的方法也可以提高代码的安全性,因为pyd文件相对于py文件来说更难以反编译。
  总的来说,选择哪种方法取决于你对代码保护安全性的需求。
  三、其他打包工具
  其他比较常见的打包工具有:
  cx_Freeze工具详解:https://pypi.org/project/cx-Freeze/
  py2exe工具详解:https://www.py2exe.org/
  其实除此之外还有很多打包工具,例如PyOxidizer,pyinstaller-auto等等等等,具体就不再展开,感兴趣的小伙伴开源自行探索。
  四、总结
  通过本文的介绍,你已经了解了几个常用的Python文件打包工具,它们可以将Python项目打包成可执行文件或安装包,实现代码的独立性和可移植性。每个工具都有其独特的优势和适用场景,根据项目需求,你可以选择合适的工具来打包Python代码。
  希望通过本文的学习,你能够更好地理解和应用Python文件打包工具,从而使你的代码更加便捷、自主。以上是关于Python文件打包工具的图文文章示例。根据大纲的指导,你可以补充每个部分的具体内容和示例,结合你的经验与观点,使文章更加丰富和有深度。希望这个示例对你有所启发!
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号