制作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)
s19930811s19930811
上一篇 2015-03-27 14:22
下一篇 2015-03-27 17:10

相关推荐

  • 文件处理工具系列(二):行编辑器sed

    1、sed介绍     sed(Stream EDitor),是一种行编辑工具,它一次处理一行内容。处理时,把当前匹配到的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令对这些数据做出相应的增删改查操作,处理完成后,默认输出至屏幕,而未被匹配到的行也将默认输出至屏幕。而原来的文件内容并没有发生改变,除…

    Linux干货 2016-08-11
  • 搜索引擎-网络爬虫

     通用搜索引擎的处理对象是互联网网页,目前网页数量以百亿计,搜索引擎的网络爬虫能够高效地将海量的网页数据传下载到本地,在本地 形成互联网网页的镜像备份。它是搜索引擎系统中很关键也很基础的构件。 1. 网络爬虫本质就是浏览器http请求。      浏览器和网络爬虫是两种不同的网络客户端,都以相同的方式来获取网…

    Linux干货 2015-11-18
  • shell脚本总结

    shell进阶:列表生成方式:列表生成方式:(1) 直接给出列表 以空白为间隔(2) 整数列表:(a) {start..end}(b) $(seq [start [step]] end)(3) 返回列表的命令$(COMMAND)(4) 使用glob,如:.sh(5) 变量引用;$@, $while read line(用法)(用于遍历文件,进行处理…

    Linux干货 2017-07-10
  • LAMP 通过使用脚本的方式安装并部署Discuz

    该脚本有很多辅助的部分,主要是为了让脚本在中途运行失败可以多次运行,所产生的结果是预期的,与第一运行并成功的结果是一样的。初次摄入bash脚本有很多不足,敬请指正。 所需要的软件 apr-1.5.2.tar.bz2 apr-util-1.5.4.tar.bz2 Discuz_X3.2_SC_UTF8.zip freetype-2.5.4.tar.gz htt…

    Linux干货 2016-04-05
  • 2016/10/14作业

    操作类: 1、设置自己的终端提示符,要求终端登陆时:     a> 需要带颜色      b> 需要显示当前执行到了第几条命令      c> 显示当前登录终端,主机名和当前时间 首先我们要了解一个环境…

    Linux干货 2016-10-19
  • 马哥教育网络班22期+第8周课程练习 忍者乱太郎喻成

    第八周 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 一个好的链接,主要的参考http://www.cnblogs.com/imapla/archive/2013/03/12/2955931.html简单的总结和自己的理解桥接器(network bridge),又称网桥,一种网络设备,负责网络桥接(network …

    Linux干货 2016-12-26