• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python项目打包成二进制的方法

python 搞代码 4年前 (2022-01-07) 40次浏览 已收录 0个评论

这篇文章主要介绍了Python项目打包成二进制的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下

Python项目打包

python本身是一种脚本语音,发布的话,直接发布源代码就可以了,但是,可能有些公司并不想发布源代码,那么,就涉及到打包了,网上有很的打包教程,其实我也没有认真去研究,因为我只想简单点,所以,我打算直接编译成pyc二进制文件来发布,就可以了。

问题

编译成二进制文件(*.pyc)之后,文件名都变了,模块之间怎么引用?
网上的例子,大都是对单个文件编译的介绍,对整个目录编译的话,也都是输出到相应的文件夹下,需要单独抽取出来,发布。

解决问题

一般编译之后的文件命名为:比如我的源文件为test.py,编译后输出到__pycache__文件夹下test.cpython-37.pyc,要保持模块引用不改变,那么必须在编译之后重命名为test.pyc文件,批注:37是因为我使用的python版本为3.7.4所以含有37,其他版本要做相应的调整。
需要按照原来的项目目录结构输出pyc文件才能保证模块之间调用没有问题。

编码实现

 import os import shutil import compileall from pathlib import Path versions = ".cpython-37" pycache = "__pycache__" build_dir = "build" root = os.getcwd() print("正在编译文件...请等待...") compileall.compile_dir(root) # 编译 build = Path(root,build_dir) if build.exists():     print("正在移除build目录...请等待...")     shutil.rmtree(build) print("正在复制文件...请等待<em style="color:transparent">来源gao.dai.ma.com搞@代*码网</em>...") shutil.copytree(root,build) # 复制文件到build目录 for root, dirs, files in os.walk(build): # 开始遍历文件         # root 表示当前正在访问的文件夹路径         # dirs 表示该文件夹下的子目录名list         # files 表示该文件夹下的文件list         # 遍历文件         for f in files:             src = os.path.join(root, f)             if f.endswith(".py"):                 os.remove(src)             elif f.endswith(".pyc"):                 upper_dir = root.replace(pycache,"")                 dst = os.path.join(upper_dir,f.replace(versions,""))                 shutil.copy(src,dst) for root, dirs, files in os.walk(build): # 移除缓存文件夹     print("正在移除缓存文件...请等待...")     if root.endswith(pycache):         shutil.rmtree(root) print("打包完成...请查看目录:"+str(build))

注意文件中版本号的调整,基本上是通用的,所有的python项目都可以用拿来就用。代码很简单,但是很实用。

牛人之所以是牛人,是因为你现在在踩的坑,他曾经都已经踩过了。

以上就是Python项目打包成二进制的方法的详细内容,更多关于Python项目打包成二进制的资料请关注gaodaima搞代码网其它相关文章!

以上就是Python项目打包成二进制的方法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python项目打包成二进制的方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址