<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[运维进行时]]></title> 
<link>https://blog.liuts.com/index.php</link> 
<description><![CDATA[互联网运维与架构]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[运维进行时]]></copyright>
<item>
<link>https://blog.liuts.com/post/213/</link>
<title><![CDATA[制作python模块安装包[原创]]]></title> 
<author>刘天斯 &lt;liutiansi@gmail.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Tue, 24 Aug 2010 08:32:49 +0000</pubDate> 
<guid>https://blog.liuts.com/post/213/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;python的第三方模块越来越丰富，涉及的领域也非常广，如科学计算、图片处理、web应用、GUI开发等。当然也可以将自己写的模块进行打包或发布。一简单的方法是将你的类包直接copy到python的lib目录，但此方式不便于管理与维护，存在多个python版本时会非常混乱。现介绍如何编写setup.py来对一个简单的python模块进行打包。<br/><br/><strong>一、编写模块</strong><br/>进入项目目录<br/>#cd /home/pysetup <br/>#vi foo.py<br/><textarea name="code" class="python" rows="15" cols="100">
class MyClass():
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.blog = "http://blog.liuts.com"

&nbsp;&nbsp;&nbsp;&nbsp;def printblog(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print self.blog

&nbsp;&nbsp;&nbsp;&nbsp;def printBblog(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print self.blog.swapcase()
</textarea><br/><strong>二、编写setup.py</strong><br/>#vi setup.py<br/><textarea name="code" class="python" rows="15" cols="100">
from distutils.core import setup
setup(name='Myblog',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version='1.0',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;description='My Blog Distribution Utilities',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;author='Liu tiansi',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;author_email='liutiansi@gmail.com',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url='http://blog.liuts.com',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;py_modules=['foo'],
&nbsp;&nbsp;&nbsp;&nbsp; )
</textarea><br/>更多参数说明见表：<br/><a href="https://blog.liuts.com/attachment.php?fid=160" target="_blank"><img src="https://blog.liuts.com/attachment.php?fid=160" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><strong>三、setup.py参数说明</strong><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>#python setup.py build&nbsp;&nbsp;&nbsp;&nbsp; # 编译<br/>#python setup.py install&nbsp;&nbsp;&nbsp;&nbsp;#安装<br/>#python setup.py sdist&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#生成压缩包(zip/tar.gz)<br/>#python setup.py bdist_wininst&nbsp;&nbsp;#生成NT平台安装包(.exe)<br/>#python setup.py bdist_rpm #生成rpm包<br/></div></div><br/>或者直接"bdist 包格式"，格式如下：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>#python setup.py bdist --help-formats <br/>&nbsp;&nbsp;--formats=rpm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RPM distribution<br/>&nbsp;&nbsp;--formats=gztar&nbsp;&nbsp;&nbsp;&nbsp;gzip'ed tar file<br/>&nbsp;&nbsp;--formats=bztar&nbsp;&nbsp;&nbsp;&nbsp;bzip2'ed tar file<br/>&nbsp;&nbsp;--formats=ztar&nbsp;&nbsp;&nbsp;&nbsp; compressed tar file<br/>&nbsp;&nbsp;--formats=tar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tar file<br/>&nbsp;&nbsp;--formats=wininst&nbsp;&nbsp;Windows executable installer<br/>&nbsp;&nbsp;--formats=zip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZIP file<br/></div></div><br/><strong>四、打包</strong><br/>#python setup.py sdist<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>running sdist<br/><span style="color: #FF4500;"><br/>warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)<br/>warning: sdist: standard file not found: should have one of README, README.txt<br/></span><br/>writing manifest file 'MANIFEST'<br/>creating Myblog-1.0<br/>making hard links in Myblog-1.0...<br/>hard linking foo.py -> Myblog-1.0<br/>hard linking setup.py -> Myblog-1.0<br/>creating dist<br/>tar -cf dist/Myblog-1.0.tar Myblog-1.0<br/>gzip -f9 dist/Myblog-1.0.tar<br/>removing 'Myblog-1.0' (and everything under it)<br/></div></div><br/>提示两条warning可以忽略，不影响打包，当然一个完善的项目必须有README及MANIFEST.in(项目文件清单)文件。<br/>#ls dist<br/><span style="color: #FF4500;"><br/>Myblog-1.0.tar.gz<br/></span><br/><strong>五、安装</strong><br/>#tar -zxvf Myblog-1.0.tar.gz<br/>#cd Myblog-1.0.tar.gz<br/>#python setup.py install (此命令大家再熟悉不过了)<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>running install<br/>running build<br/>running build_py<br/>creating build/lib.linux-x86_64-2.6<br/>copying foo.py -> build/lib.linux-x86_64-2.6<br/>running install_lib<br/>copying build/lib.linux-x86_64-2.6/foo.py -> /usr/local/lib/python2.6/dist-packages<br/>byte-compiling /usr/local/lib/python2.6/dist-packages/foo.py to foo.pyc<br/>running install_egg_info<br/>Writing /usr/local/lib/python2.6/dist-packages/Myblog-1.0.egg-info<br/></div></div><br/><strong>六、测试</strong><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>>>> from foo import MyClass<br/>>>> app=MyClass()<br/>>>> app.print printblog()<br/>>>> app.printblog()<br/>http://blog.liuts.com<br/>>>> app.printBblog()<br/>HTTP://BLOG.LIUTS.COM<br/>>>><br/></div></div><br/>参考文献：<br/><a href="http://docs.python.org/distutils/setupscript.html" target="_blank">http://docs.python.org/distutils/setupscript.html</a><br/><br/>如大家有什么疑问或感兴趣的话题可以通过weibo与我交流：<a href="http://t.qq.com/yorkoliu" target="_blank">http://t.qq.com/yorkoliu</a><br/>Tags - <a href="https://blog.liuts.com/tags/python/" rel="tag">python</a> , <a href="https://blog.liuts.com/tags/setup.py/" rel="tag">setup.py</a> , <a href="https://blog.liuts.com/tags/%25E5%25AE%2589%25E8%25A3%2585%25E5%258C%2585/" rel="tag">安装包</a>
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/213/#blogcomment158</link>
<title><![CDATA[[评论] 制作python模块安装包[原创]]]></title> 
<author>fh.cn &lt;lr@isadba.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Fri, 27 Aug 2010 07:45:51 +0000</pubDate> 
<guid>https://blog.liuts.com/post/213/#blogcomment158</guid> 
<description>
<![CDATA[ 
	呵呵，来友情支持天师一下。
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/213/#blogcomment2609</link>
<title><![CDATA[[评论] 制作python模块安装包[原创]]]></title> 
<author>卡卡 &lt;171205858@qq.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Tue, 18 Aug 2015 06:04:52 +0000</pubDate> 
<guid>https://blog.liuts.com/post/213/#blogcomment2609</guid> 
<description>
<![CDATA[ 
	我想知道 在运行python setup.py install如果机器存在多个python版本，，系统会用哪个python：如：Writing /usr/local/lib/python2.6/dist-packages/Myblog-1.0.egg-info系统怎么指定应该写入python2.6下的dist-packages
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/213/#blogcomment2965</link>
<title><![CDATA[[评论] 制作python模块安装包[原创]]]></title> 
<author>water &lt;zhangwangjhs@qq.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sat, 31 May 2025 13:36:25 +0000</pubDate> 
<guid>https://blog.liuts.com/post/213/#blogcomment2965</guid> 
<description>
<![CDATA[ 
	感谢分享、学习一下
]]>
</description>
</item>
</channel>
</rss>