python compileall 打包发布
Python工程的编译、合并、打包、发布
确保要发布的包(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=True, maxlevels=0, force=False, quiet=0, legacy=False, optimize=-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 打包发布相关推荐
- 【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目)
Python项目打包发布汇总 [Python]Python项目打包发布(一)(基于Pyinstaller打包多目录项目) [Python]Python项目打包发布(二)(基于Pyinstaller打包 ...
- 使用pyinstaller将python项目打包发布为exe可执行文件
pyinstaller模块用于将python项目打包发布成exe文件,以方便地在没有安装python环境的机器上运行.该模块使用 pip install pyinstaller 安装即可. 一.常用参 ...
- Python项目打包发布到pypi
最近心血来潮,想把自己的写的python项目打包到pypi,也让广大朋友能够通过pip来安装我的python包. 第一次尝试,中间遇到了一些问题,记录下来,方便其他感兴趣的朋友. 项目组织架构 # t ...
- web前端+python后端打包发布
前端打包:前端web项目打包(二) - anyejin - 博客园 Software Protection, Software Licensing, Software Virtualization N ...
- Python项目打包发布方法
目前python打包工具有多个,目前比较好用的为pyinstaller,该工具可以支持在window和linux下使用. 在windows下,大小为几十K的源文件打包成exe文件,可能为几十兆,原因是 ...
- python文件打包发布(引用的包也可以加进来),打包出错解决了,运行出错解决了...
一开始,我以为,打包本来就很容易,可是没有..... 没想到打包还能遇到坑 T.T 打包步骤: 1.安装 pyinstaller (cmd) pip install pyinstaller 2.进入目 ...
- python打包发布pypi及更新流程
参考文档 Python 快速打包发布软件PyPi上 包含setup.py的非Python文件 五步法更新pypi包体 发布 1. 安装打包依赖工具 pip install setuptools 2. ...
- python distutils模块(貌似是用来打包发布自定义python包的)
打包工具来的,貌似是用来打包发布自定义python包的 参考文章:尝试修改LabelImg,将以对顶角画框改成以对角线相交点画框
- python打包安卓的方法_打包发布Python模块的方法详解
前言 昨天把自己的VASP文件处理库进行了打包并上传到PyPI,现在可以直接通过pip和easy_install来安装VASPy啦(同时欢迎使用VASP做计算化学的童鞋们加星和参与进来), 由于自己的 ...
最新文章
- MySQL优化篇:数据准备
- 在Ubuntu Server上添加NFS共享文件夹
- Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力...
- BZOJ4300 绝世好题(动态规划)
- 基于LBS的热点店铺搜索
- 二维数组 赋值_3.9数组(数组基本使用、数组的循环、数组拷贝、数组排序、多维数组)...
- 什么是Scale Up和Scale Out?
- 全面掌握ping命令(三) ping命令防火墙设置
- php在windows安装,php在windows环境下的安装
- 超详细的MySQL完全卸载教程
- 二、Java的三大特征(或者四大特征)
- 笔记本 续航测试软件,续航测试:较高强度运行状态_笔记本评测-中关村在线
- Word2Vec模型配置参数
- html的九宫格构图教学视频,构图的基本技巧之九宫格构图
- MinGW-w64没有bin文件解决方法
- win7快速启动栏计算机,win7快速启动栏,教您Win7如何添加快速启动栏
- TestCenter测试管理工具功能详解一(F)
- 物联网导论-EPC系统
- 音视频的相关名词、术语、概念
- python文本发音_python3 - 文本读音器
热门文章
- Python之flask结合Bootstrap框架快速搭建Web应用
- 100亿数据1万属性数据架构设计
- java解析xml 忽略dtd_使用dom4j解析XML时候忽略DTD文件
- java byte array_Java IO: ByteArray和Filter
- mysql error 1594_MySQL 1594 异常解决办法
- cmyk图像处理matlab,数字图像处理及MATLAB实现 全套课件.pptx
- jquery的四层联动插件jquerySelect
- react native 中下拉列表FlatList组件的讲解以及实例demo
- 微信小程序开发第二弹
- 十年Java编程开发生涯,java内存溢出和内存泄漏的区别