制作python模块安装包[原创]

 python的第三方模块越来越丰富,涉及的领域也非常广,如科学计算、图片处理、web应用、GUI开发等。当然也可以将自己写的模块进行打包或发布。一简单的方法是将你的类包直接copy到python的lib目录,但此方式不便于管理与维护,存在多个python版本时会非常混乱。现介绍如何编写setup.py来对一个简单的python模块进行打包。

一、编写模块
进入项目目录
#cd /home/pysetup 
#vi foo.py

  • view plainprint?
    class MyClass():  
        def __init__(self):  
            self.blog = "http://blog.liuts.com"  
      
        def printblog(self):  
            print self.blog  
      
        def printBblog(self):  
            print self.blog.swapcase()

二、编写setup.py
#vi setup.py

view plainprint?
from distutils.core import setup  
setup(name='Myblog',  
      version='1.0',  
      description='My Blog Distribution Utilities',  
      author='Liu tiansi',  
      author_email='liutiansi@gmail.com',  
      url='http://blog.liuts.com',  
      py_modules=['foo'],  
     )

更多参数说明见表:

1.png

三、setup.py参数说明

#python setup.py build     # 编译
#python setup.py install    #安装
#python setup.py sdist      #生成压缩包(zip/tar.gz)
#python setup.py bdist_wininst  #生成NT平台安装包(.exe)
#python setup.py bdist_rpm #生成rpm包

或者直接"bdist 包格式",格式如下:

#python setup.py bdist --help-formats 
  --formats=rpm      RPM distribution
  --formats=gztar    gzip'ed tar file
  --formats=bztar    bzip2'ed tar file
  --formats=ztar     compressed tar file
  --formats=tar      tar file
  --formats=wininst  Windows executable installer
  --formats=zip      ZIP file

四、打包
#python setup.py sdist

running sdist
warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)
warning: sdist: standard file not found: should have one of README, README.txt
writing manifest file 'MANIFEST'
creating Myblog-1.0
making hard links in Myblog-1.0...
hard linking foo.py -> Myblog-1.0
hard linking setup.py -> Myblog-1.0
creating dist
tar -cf dist/Myblog-1.0.tar Myblog-1.0
gzip -f9 dist/Myblog-1.0.tar
removing 'Myblog-1.0' (and everything under it)

提示两条warning可以忽略,不影响打包,当然一个完善的项目必须有README及MANIFEST.in(项目文件清单)文件。
#ls dist

Myblog-1.0.tar.gz

五、安装
#tar -zxvf Myblog-1.0.tar.gz
#cd Myblog-1.0.tar.gz
#python setup.py install (此命令大家再熟悉不过了)

running install
running build
running build_py
creating build/lib.linux-x86_64-2.6
copying foo.py -> build/lib.linux-x86_64-2.6
running install_lib
copying build/lib.linux-x86_64-2.6/foo.py -> /usr/local/lib/python2.6/dist-packages
byte-compiling /usr/local/lib/python2.6/dist-packages/foo.py to foo.pyc
running install_egg_info
Writing /usr/local/lib/python2.6/dist-packages/Myblog-1.0.egg-info

六、测试

>>> from foo import MyClass
>>> app=MyClass()
>>> app.print printblog()
>>> app.printblog()
http://blog.liuts.com
>>> app.printBblog()
HTTP://BLOG.LIUTS.COM
>>>

参考文献:
http://docs.python.org/distutils/setupscript.html

如大家有什么疑问或感兴趣的话题可以通过weibo与我交流:http://t.qq.com/yorkoliu

转自:http://blog.liuts.com/post/213/#entrymore

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/1737

(0)
上一篇 2015-03-27 14:22
下一篇 2015-03-27 17:10

相关推荐

  • 第十一周

    1、详细描述一次加密通讯的过程,结合图示最佳。 2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。 CA 服务器端: (1)生成 CA 服务器的私钥 (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) (2)生成 CA服务器自谦证书 openssl req …

    Linux干货 2017-03-30
  • N26-第八周

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。     网桥(birdge):工作于OSI模型中的数据链路层,是连接两个局域网的一种存储/转发设备,能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器,可以分割冲突域。   &nb…

    2017-03-08
  • keepalived+nginx

    keepalived可以认为是VRRP协议在Linux上的实现,主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。本文基于如下的拓扑图: 配置keepalived+nginx的方…

    Linux干货 2016-11-04
  • 邮件原理你真的造吗

    一、前言     虽然现在QQ、微信等即时聊天工具原来越盛行,但是在企业与企业之间大部分还是会使用邮件系统进行信息交换。所以作为运维人员,更需要了解这个技术的原理。下面会慢慢介绍邮件的组件功能,将其组成部分。以及邮件的工作原理。     小贴士:邮件系统是一个比较复杂的系统,过程…

    Linux干货 2015-08-17
  • httpd2.2基础安装

    编译安装前,首先要确认开发包组已经装上。 开发包组: Developments tools server platform development(centos 7) 并且将apr 与 apr-unil 装上。这是httpd 可移植运行所必须用到的组件.这里举例说明的是httpd2.2版本。 若是安装httpd2.4以上版本的话,还要安装pcre库。pcre…

    2017-04-24
  • 文本字符处理工具

    文件查看命令 cat,tac,rev cat [options] [file]     -E:显示行结束符     -n:显示行号                    nl file 也能实现相同的功能   …

    Linux干货 2017-02-25