以下主要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 打包和发布方法汇总的更多相关文章

  1. 编程中遇到的Python错误和解决方法汇总整理

    这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下   开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析, ...

  2. 【Python打包成exe方法】——已解决导入第三方包无法打包的问题

    ​ 前言 在我们写代码的过程中,我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我们将我们的xx.py文件发给他,他是不能直接用的,他还需要安装python解释器,甚至还要安 ...

  3. Android 类库打包、发布方法

    开发Android应用的时候,对于可用于多个应用的公用的部分,或是打算发布给第三方进行应用集成的部分,要把这部分打包成类库怎么做呢? Android应用使用ADT打包成apk,apk中包含了运行程序所 ...

  4. 【python基础】字符串方法汇总

    一.声明 0-多个字符组成的有序序列; 二.特点 1. 字符串是一个不可变的数据类型 2.字符串是有序的 三.索引 下标:'abcde' 1.从左到右, 0, 1,2, ... 2.从右到左, 索引值 ...

  5. 【python基础】元组方法汇总

    一.定义 用于存储一组数据的有序序列, 一旦创建, 元组中的各个元素不允许修改 二.特点 1.元组有序; 2.元组是不可变的数据类型;不可修改; 3.元组中可以存储重复的数据; 4.元组中可以同时存储 ...

  6. 十四、python字典中的方法汇总

    '''1.访问.修改,删除字典中的值:''' dict={'a':'11','b':'22','c':'33','d':'44'}print dict['a'],dict['d'] #访问dict[' ...

  7. 【python基础】集合方法汇总

    一.定义 用于存储一组无序的不重复的数据 二.特点 1. 集合是无序的 2.集合中的元素是不重复的, 唯一的 3.集合中存储的数据必须是不可变的数据类型 4.集合是可变的数据类型 三.语法 set1 ...

  8. Python打包文件夹的方法小结(zip,tar,tar.gz等)

    本文实例讲述了Python打包文件夹的方法.分享给大家供大家参考,具体如下: 一.zip ? 1 2 3 4 5 6 7 8 9 10 11 import os, zipfile #打包目录为zip文 ...

  9. python之打包、发布模块

    一.python中针对于写好的模块,并且比人也可以使用改模块,这样就可以以同意的打出来,让别人安装或者赋值过后可以更好的使用以及集成. 二.最近在学习python所以这里主要是记录一下python的打 ...

随机推荐

  1. MVC复杂模型绑定

    当初遇到业务需求ajax提交一组对象数组到服务器.但是苦于mvc的默认绑定器.绑定不上去.好吧只有靠自己了. 当初就是参考这个大大的博客:http://www.cnblogs.com/xfrog/ar ...

  2. bzoj 1066 蜥蜴

    最大流. 建图:首先将每根柱子拆成两个点. 每根柱子的入点向出点连一条容量为柱子高度的边. 每根柱子的出点向可以到达的柱子的入点连一条容量为正无穷的边. 源点向每根初始有蜥蜴的柱子的入点连一条容量为一 ...

  3. SQL case

    case when Value='1' then 'True'  else 'False' end as 'Result'

  4. PHP数组函数: array_walk()与 array_map() 的区别

    详细的介绍如下: PHP数组函数: array_walk() PHP数组函数: array_map() 实际应用中的一点区别与总结: array_walk() 主要用于对某个数组的迭代,相当于 for ...

  5. 局域网中共享Lantern上网

    Lantern作为一款非常好用的上网软件,深受大家喜爱,但是由于目前没有ios版,所以iPhone用户上网很麻烦,这里介绍一下如何共享Lantern使局域网内的设备都能正常上网. 1.电脑端设置:右键 ...

  6. html5页面打包成App - Android或Iphone安装程序

    下载安装前端开发工具:HBuilder 官网下载:http://www.dcloud.io/ 根据官网说明安装 * 打开登录HBuilder,把做好的H5页面通过添加app项目把H5的文件夹加入进来( ...

  7. Linux使用手册-时区和时间设置

    1. #vi /etc/sysconfig/clockZONE=”Asia/Shanghai”UTC=false2.#vi /usr/share/zoneinfo/Asia/Shanghai,如果结尾 ...

  8. Qt5.7中使用MySQL Driver

    Qt5.7中使用MySQL Driver 1.使用环境 Qt5.7的安装安装就已经带了MySQL Driver,只需要在安装的时候选择一下即可. 如果没有安装,可以采取自己编译的方式. 在Qt的源码包 ...

  9. rsa 签名 加密解密

    A->B 签名 ==========================A方+A方的私钥 => B收到后 用A方的公钥 验证签名 ==========================A-> ...

  10. 音频指纹(Philips)

    参考<A Highly Robust Audio Fingerprinting System> Philips 音频指纹提取流程: 仿真效果: 第一个图为歌曲1的第一个指纹. 第二个图为歌 ...