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的打 ...
随机推荐
- 用CSS绘制最常见的形状和图形
#rectangle { width: 200px; height: 100px; background: red; } #circle { width: 100px; height: 100px; ...
- CSS3幻灯片制作心得
大神勿喷,这是小弟自己学习的痕迹. CSS3动画效果核心代码 @keyframes slideLeft { 0% { left: -500px; } 100% { ; } } @keyframes s ...
- Neural Style学习2——环境安装
neural-style Installation This guide will walk you through the setup for neural-style on Ubuntu. Ste ...
- iOS特殊字符处理
你提供的 URL 字符串 里面可能包含某些字符,比如‘$‘ ‘&’ ‘?’...等,这些字符在 URL 语法中是具有特殊语法含义的, 比如 URL :http://www.baidu.com/ ...
- hibernate-criteria查询(二)
Restrictions 类的作用是什么? Criteria 接口没有 iterate() 方法. Criteria 查询如何对查询结果排序.分页? Criteria 查询如何实现关联? ...
- Install Docker on Ubuntu
Install Docker on Ubuntu Estimated reading time: 17 minutes Docker is supported on these Ubuntu oper ...
- STM8如何使用自带的bootloader
1,首先确认你使用的STM8有没有自带的bootloader.参考下表 2,STM8空器件可以直接使用自带的bootloader. 3,STM8在使用SWIM烧录后,要想继续使用自带的bootload ...
- java 实现文件下载
需求:把每天产生的日志文件,从服务器上下载下来 File file = new File(path); // 根据路径,获取File String filename = file.getName(); ...
- Python 读写文件中数据
1 需求 在文件 h264.txt 中的数据如图1,读入该文件中的数据,然后将第1列的地址删除,然后将数据输出到h264_out.txt中: 图1 h264.txt 数据截图 ...
- mysql配置远程连接方法之一(改表法)
1.问题:如果在远程连接报错:1130-host ... is not allowed to connect to this MySql server,可能是你的帐号不允许从远程登陆,只能在local ...