Python 打包和发布方法汇总
以下主要Python打包汇总,作为学习备份;
一、使用python内部基础工具包Distutils打包程序
1. 在打包之前需要做的就是配置好安装脚本,一般为setup.py文件;
示例(setup.py):
from distutils.core import setup
setup(name='Hello',
version='1.0',
description='example',
author='haomiao',
py_modules=['hello'])
该配置文件,只使用了py_modules参数,单一的模块文件名hello.py,当然还有其他的属性、选项可设置;hello.py应与setup.py在同一目录下,分发的时候最好将该目录作为单独的一个目录文件,并将其所依赖的或需要的文件、资源均放在这个目录下或其子目录下,该目录就可以分发给其他开发人员或客户(一般的最终客户不会做这些安装的繁琐事情);
此外,若有其他的资源文件或是其他的多个py文件,则可以增加packages等其他相关的参数指令。
将该目录模块安装到python中;执行:python setup.py install ,此后将会复制相关文件至python安装路径下的Lib/site-packages下,
如上示例将会在该路径下产生:hello.py hello.pyc Hell-1.0-pyx.x.egg-info文件;在使用的时候直接:import hello即可使用。
2. 在1的基础上打包,使用sdist命令(用于源码发布的形式)
执行:python setup.py sdist ,将产生两个目录build、dist以及MANIFEST列表文件,build下为中间文件可不用,dist下会打包成一个压缩文件,如:Hello-1.0.zip;事实上,该压缩文件内部包含之前的文件以及PKG-INFO的描述文件,这个时候该压缩文件就可以分发给用户;
3. 在1的基础上打包,使用bdist命令(用于创建windows或linux的安装程序)
执行:python setup.py bdist --formats=wininst , 将在dist下产生windows下的安装程序,如:Hello-1.0.win-amd64.exe(产生64位的安装程序,32位的python时会产生相应32位的安装程序Hello-1.0.win32.exe,产生linux的rpm程序,则将wininst改为rpm)。
4. 在1的基础上使用扩展python(主要是由其他编程语言对python开发的某种模块的功能扩展,以下以C语言为例,比如一个扩展文件ext.c)
修改1中的setup.py安装配置文件,如
from distutils.core import setup,Extension
setup(name='Hello',
version='1.0',
description='example',
author='haomiao',
ext_modules=[Extension('hello', ['ext.c', ‘ext.i’])])
改用ex_modules参数,此外ext.c为C语言实现的功能,ext.i为头文件、导出函数、数据的描述文件,示例如下(ext.i):
%module hello
%{
#include<string.h>
%}
extern in extFunc(int num);
说明:以%表述模块名和包含头文件;下面为需要导出的函数、数据等。
执行:python setup.py build_ext --inplace , 将产生build中间文件,以及hello.pyd, ext_wrap.c包装文件
5. 使用py2exe创建可执行程序(用户不用安装python解释器)(作为Distutils的扩展)
在使用前,需要安装pyp2exe,编写setup.py文件,如下:
from distutils.core import setup
import py2exe
setup(console=['hello.py'])
执行:python setup.py py2exe , 执行完成后,将产生build中间文件,dist目标文件,内部一般有:_hashlib.pyd bz2.pyd hello.exe library.zip pythonxx.dll select.pyd unicodedata.pyd基本上dist下所有文件应该被发布,除非你确认某些模块或文件不会被用到。
说明:以上所有的方法为概括说明作为指导,具体可以参考相应工具的文档、demo等。
Python 打包和发布方法汇总的更多相关文章
- 编程中遇到的Python错误和解决方法汇总整理
这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下 开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析, ...
- 【Python打包成exe方法】——已解决导入第三方包无法打包的问题
前言 在我们写代码的过程中,我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我们将我们的xx.py文件发给他,他是不能直接用的,他还需要安装python解释器,甚至还要安 ...
- Android 类库打包、发布方法
开发Android应用的时候,对于可用于多个应用的公用的部分,或是打算发布给第三方进行应用集成的部分,要把这部分打包成类库怎么做呢? Android应用使用ADT打包成apk,apk中包含了运行程序所 ...
- 【python基础】字符串方法汇总
一.声明 0-多个字符组成的有序序列; 二.特点 1. 字符串是一个不可变的数据类型 2.字符串是有序的 三.索引 下标:'abcde' 1.从左到右, 0, 1,2, ... 2.从右到左, 索引值 ...
- 【python基础】元组方法汇总
一.定义 用于存储一组数据的有序序列, 一旦创建, 元组中的各个元素不允许修改 二.特点 1.元组有序; 2.元组是不可变的数据类型;不可修改; 3.元组中可以存储重复的数据; 4.元组中可以同时存储 ...
- 十四、python字典中的方法汇总
'''1.访问.修改,删除字典中的值:''' dict={'a':'11','b':'22','c':'33','d':'44'}print dict['a'],dict['d'] #访问dict[' ...
- 【python基础】集合方法汇总
一.定义 用于存储一组无序的不重复的数据 二.特点 1. 集合是无序的 2.集合中的元素是不重复的, 唯一的 3.集合中存储的数据必须是不可变的数据类型 4.集合是可变的数据类型 三.语法 set1 ...
- Python打包文件夹的方法小结(zip,tar,tar.gz等)
本文实例讲述了Python打包文件夹的方法.分享给大家供大家参考,具体如下: 一.zip ? 1 2 3 4 5 6 7 8 9 10 11 import os, zipfile #打包目录为zip文 ...
- python之打包、发布模块
一.python中针对于写好的模块,并且比人也可以使用改模块,这样就可以以同意的打出来,让别人安装或者赋值过后可以更好的使用以及集成. 二.最近在学习python所以这里主要是记录一下python的打 ...
随机推荐
- 使用最快速的方式激活windows10专业版
1.安装win10专业版 2.在桌面新建“文本文档.txt” 3.复制如下代码到新新建的“文本文档.txt”中 slmgr /ipk VK7JG-NPHTM-C97JM-9MPGT-3V66T slm ...
- 江太公:javascript count(a)(b)(c)(d)运行过程思考
昨天,我弟抛给我一个js的题,使用类似标题那样的调用方法计算a*b*c*d以致无穷的实现方法.思考了半天,终于理清了它的运行过程,记录于下: 函数体: <!DOCTYPE html> &l ...
- the pipeline of call SNP
######################################## ############### Mapping ################ ################## ...
- php 读取csv 乱码
在php手册里面有这样一个例子,为什么读出的是乱码<?php$row = 1;$handle = fopen("test.csv","r");while ...
- IE浏览器不能访问网页,google可以访问
现象:google浏览器可以进行网络访问,ie不能访问 原因:代理服务修改了局域网配置脚本 解决: Internet选项---连接---局域网设置: 去除勾选 “使用自动配置脚本”
- centos 7.1 apache 源码编译安装
Apache编译安装 一,需要软件: http://mirrors.cnnic.cn/apache//apr/apr-1.5.2.tar.gz 1.apr-1.5.2.tar.gz http://mi ...
- 深入理解javascript原型和闭包(9)——简述【执行上下文】下
继续上一篇文章(http://www.cnblogs.com/wangfupeng1988/p/3986420.html)的内容. 上一篇我们讲到在全局环境下的代码段中,执行上下文环境中有如何数据: ...
- [Head First设计模式]山西面馆中的设计模式——装饰者模式
引言 在山西面馆吃鸡蛋面的时候突然想起装饰者这个模式,觉得面馆这个场景跟书中的星巴兹咖啡的场景很像,边吃边思考装饰者模式.这里也就依葫芦画瓢,换汤不换药的用装饰者模式来模拟一碗鸡蛋面是怎么出来的吧.吃 ...
- Ubuntu 12.4 Apache2 安装教程
一.更新操作系统 sudo apt-get update && sudo apt-get upgrade 二.安装Apache及依赖 sudo apt-get install apac ...
- tyvj1034 尼克的任务
描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成.尼克的一个工作日为N分钟,从第一分钟开始到第N ...