Python工程的编译、合并、打包、发布

from:https://my.oschina.net/bfbd/blog/864310

确保要发布的包(demo)的根目录中有__main__.py文件,这个是程序执行入口。

编译

python3 -O -m compileall demo

批量改名.pyc文件

 find . -name '*.pyc' -exec rename 's/.cpython-35.opt-1//' {} \;

移动.pyc文件

find . -name '*.pyc' -execdir mv {} .. \;

清理.py文件

find . -name '*.py' -type f -print -exec rm {} \;

清理__pycache__文件夹

find . -name '__pycache__' -exec rmdir {} \;

打包成zip

zip -r pub.zip ./demo/*

运行时只要将zip文件作为参数即可

python3 pub.zip

最终整合脚本

cd $1
python3 -O -m compileall .
find . -name '*.pyc' -exec rename 's/.cpython-35.opt-1//' {} \; find . -name '*.pyc' -execdir mv {} .. \; find . -name '*.py' -type f -print -exec rm {} \; find . -name '__pycache__' -exec rmdir {} \; zip -r ../$1.zip ./* 

调用方式

chmod +x pycompile.sh
./pycompile.sh demo

Python代码的编译

from:http://www.cnblogs.com/zhangzl419/p/7116158.html

Python代码的编译


Python代码在解释执行之前,是会被编译成.pyc或者.pyo文件的,它们是中间字节码表示的文件,之后Python虚拟机才会去解释执行它们。

1、pyc文件

=========

pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高。

而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。

pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的。

2、pyo文件

==========

pyo是优化编译后的程序 python -O 源文件即可将源程序编译为pyo文件。

3、把单个文件编译成pyc

====================

用如下代码

import py_compile

py_compile.compile(r'H:\game\test.py')

或者

python -m py_compile test.py

这样会在test.py文件所在的目录下,生成一个__pycache__(注意:这里目录名前后有两个下划线)的目录,并且其中存有一个test.cpython-35.pyc文件,这个pyc文件就是test.py编译之后生成的文件。

4、把一个目录下所有python源文件编译pyc

===================================

一般来说,我们的工程都是在一个目录下的,一般不会说仅仅编译一个py文件而已,而是需要把整个文件夹下的py文件都编译为pyc文件,python又为了我们提供了另一个模块:compileall 。使用方法如下:

import compileall

compileall.compile_dir(r'/root/src')

也可以直接用命令行编译一个目录下的文件

python -m compileall /root/src/

这样就会在/root/src目录下生成一个新的目录__pycache__,这个目录的下面会存放所有的和python源代码对应的pyc文件

比如源代码目录结构如下

/root/src

|---test.py

|---test2.py

|---test3.py

编译后目录结构会变成如下:

/root/src

|---test.py

|---test2.py

|---test3.py

|---__pycache__

|----test.cpython-35.pyc

|----test2.cpython-35.pyc

|----test3.cpython-35.pyc

以上就是Python编译的基本知识。

注意:

compileall.compile_path(skip_curdir=Truemaxlevels=0force=Falsequiet=0legacy=Falseoptimize=-1)

字节编译沿 sys.path 找到的所有 .py 文件。如果所有文件都已成功编译,则返回true值,否则返回false值。

如果 skip_curdir 为true(默认值),则当前目录不包括在搜索中。所有其他参数传递到 compile_dir() 函数。注意,与其他编译函数不同,maxlevels 默认为 0

在 3.2 版更改: 添加了 legacy 和 optimize 参数。

在 3.5 版更改: quiet 参数更改为多级值。

在 3.5 版更改: legacy 参数只写出 .pyc 文件,而不是 .pyo 文件,无论 optimize 的值是什么。

 

转载于:https://www.cnblogs.com/bonelee/p/8619391.html

python compileall 打包发布相关推荐

  1. 【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目)

    Python项目打包发布汇总 [Python]Python项目打包发布(一)(基于Pyinstaller打包多目录项目) [Python]Python项目打包发布(二)(基于Pyinstaller打包 ...

  2. 使用pyinstaller将python项目打包发布为exe可执行文件

    pyinstaller模块用于将python项目打包发布成exe文件,以方便地在没有安装python环境的机器上运行.该模块使用 pip install pyinstaller 安装即可. 一.常用参 ...

  3. Python项目打包发布到pypi

    最近心血来潮,想把自己的写的python项目打包到pypi,也让广大朋友能够通过pip来安装我的python包. 第一次尝试,中间遇到了一些问题,记录下来,方便其他感兴趣的朋友. 项目组织架构 # t ...

  4. web前端+python后端打包发布

    前端打包:前端web项目打包(二) - anyejin - 博客园 Software Protection, Software Licensing, Software Virtualization N ...

  5. Python项目打包发布方法

    目前python打包工具有多个,目前比较好用的为pyinstaller,该工具可以支持在window和linux下使用. 在windows下,大小为几十K的源文件打包成exe文件,可能为几十兆,原因是 ...

  6. python文件打包发布(引用的包也可以加进来),打包出错解决了,运行出错解决了...

    一开始,我以为,打包本来就很容易,可是没有..... 没想到打包还能遇到坑 T.T 打包步骤: 1.安装 pyinstaller (cmd) pip install pyinstaller 2.进入目 ...

  7. python打包发布pypi及更新流程

    参考文档 Python 快速打包发布软件PyPi上 包含setup.py的非Python文件 五步法更新pypi包体 发布 1. 安装打包依赖工具 pip install setuptools 2. ...

  8. python distutils模块(貌似是用来打包发布自定义python包的)

    打包工具来的,貌似是用来打包发布自定义python包的 参考文章:尝试修改LabelImg,将以对顶角画框改成以对角线相交点画框

  9. python打包安卓的方法_打包发布Python模块的方法详解

    前言 昨天把自己的VASP文件处理库进行了打包并上传到PyPI,现在可以直接通过pip和easy_install来安装VASPy啦(同时欢迎使用VASP做计算化学的童鞋们加星和参与进来), 由于自己的 ...

最新文章

  1. MySQL优化篇:数据准备
  2. 在Ubuntu Server上添加NFS共享文件夹
  3. Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力...
  4. BZOJ4300 绝世好题(动态规划)
  5. 基于LBS的热点店铺搜索
  6. 二维数组 赋值_3.9数组(数组基本使用、数组的循环、数组拷贝、数组排序、多维数组)...
  7. 什么是Scale Up和Scale Out?
  8. 全面掌握ping命令(三) ping命令防火墙设置
  9. php在windows安装,php在windows环境下的安装
  10. 超详细的MySQL完全卸载教程
  11. 二、Java的三大特征(或者四大特征)
  12. 笔记本 续航测试软件,续航测试:较高强度运行状态_笔记本评测-中关村在线
  13. Word2Vec模型配置参数
  14. html的九宫格构图教学视频,构图的基本技巧之九宫格构图
  15. MinGW-w64没有bin文件解决方法
  16. win7快速启动栏计算机,win7快速启动栏,教您Win7如何添加快速启动栏
  17. TestCenter测试管理工具功能详解一(F)
  18. 物联网导论-EPC系统
  19. 音视频的相关名词、术语、概念
  20. python文本发音_python3 - 文本读音器

热门文章

  1. Python之flask结合Bootstrap框架快速搭建Web应用
  2. 100亿数据1万属性数据架构设计
  3. java解析xml 忽略dtd_使用dom4j解析XML时候忽略DTD文件
  4. java byte array_Java IO: ByteArray和Filter
  5. mysql error 1594_MySQL 1594 异常解决办法
  6. cmyk图像处理matlab,数字图像处理及MATLAB实现 全套课件.pptx
  7. jquery的四层联动插件jquerySelect
  8. react native 中下拉列表FlatList组件的讲解以及实例demo
  9. 微信小程序开发第二弹
  10. 十年Java编程开发生涯,java内存溢出和内存泄漏的区别