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

 更新时间:2020年12月30日 16:50:00   作者:dwBurning  
这篇文章主要介绍了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("正在复制文件...请等待...")
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项目打包成二进制的资料请关注脚本之家其它相关文章!

相关文章

  • Flask框架debug与配置项的开启与设置详解

    Flask框架debug与配置项的开启与设置详解

    这篇文章主要介绍了Flask框架debug与配置项的开启与设置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • pandas 读取excel文件的操作代码

    pandas 读取excel文件的操作代码

    pandas 读取excel文件使用的是 read_excel方法。本文将详细解析read_excel方法的常用参数,以及实际的使用示例,感兴趣的朋友跟随小编一起看看吧
    2021-10-10
  • Python安装并操作redis实现流程详解

    Python安装并操作redis实现流程详解

    这篇文章主要介绍了Python安装并操作redis实现流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python Paramiko上传下载sftp文件及远程执行命令详解

    Python Paramiko上传下载sftp文件及远程执行命令详解

    这篇文章主要为大家介绍了Python Paramiko上传下载sftp文件及远程执行命令示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Python使用正则表达式抓取网页图片的方法示例

    Python使用正则表达式抓取网页图片的方法示例

    这篇文章主要介绍了Python使用正则表达式抓取网页图片的方法,结合具体实例形式分析了Python网页文件的读取及正则匹配相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • slearn缺失值处理器之Imputer详析

    slearn缺失值处理器之Imputer详析

    这篇文章主要给大家介绍了关于slearn缺失值处理器之Imputer的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-08-08
  • Django中自定义查询对象的具体使用

    Django中自定义查询对象的具体使用

    这篇文章主要介绍了Django中自定义查询对象的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Python3操作SQL Server数据库(实例讲解)

    Python3操作SQL Server数据库(实例讲解)

    下面小编就为大家带来一篇Python3操作SQL Server数据库(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 带你用Python实现Saga 分布式事务的方法

    带你用Python实现Saga 分布式事务的方法

    在这篇文章里,我们介绍了 SAGA 的理论知识,也通过一个例子,完整给出了编写一个 SAGA 事务的过程,涵盖了正常成功完成,异常情况,以及成功回滚的情况,需要的朋友参考下吧
    2021-09-09
  • Python 合并/拆分Excel的实现示例

    Python 合并/拆分Excel的实现示例

    有时对于多个工作表需要进行合并或拆分,以便进行浏览总结,本文主要介绍了Python 合并/拆分Excel的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09

最新评论