<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>meisw's blog</title>
		<link>http://meisw.wdlinux.cn//</link>
		<description>工作,学习,生活,这里将会有一些记录.     备用域名:http://meisw.wdlinux.cn</description>
		<copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright>
		<generator>SaBlog-X Version 1.6 Build 20080806</generator>
		<lastBuildDate>Fri, 28 Aug 2026 03:47:18 +0000</lastBuildDate>
		<ttl>30</ttl>
		<item>
			<guid>http://meisw.wdlinux.cn//show-1088-1.html</guid>
			<title>error: externally-managed-environment</title>
			<author>admin</author>
			<description><![CDATA[<p>&nbsp;error: externally-managed-environment</p>
<div>&nbsp;</div>
<div>&times; This environment is externally managed</div>
<div>╰─&gt; To install Python packages system-wide, try apt install</div>
<div>&nbsp; &nbsp; python3-xyz, where xyz is the package you are trying to</div>
<div>&nbsp; &nbsp; install.</div>
<div>&nbsp;</div>
<div>&nbsp; &nbsp; If you wish to install a non-Debian-packaged Python package,</div>
<div>&nbsp; &nbsp; create a virtual environment using python3 -m venv path/to/venv.</div>
<div>&nbsp; &nbsp; Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make</div>
<div>&nbsp; &nbsp; sure you have python3-full installed.</div>
<div>&nbsp;</div>
<div>&nbsp; &nbsp; If you wish to install a non-Debian packaged Python application,</div>
<div>&nbsp; &nbsp; it may be easiest to use pipx install xyz, which will manage a</div>
<div>&nbsp; &nbsp; virtual environment for you. Make sure you have pipx installed.</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>
<div>apt install python3-venv</div>
<div>python3 -m venv myenv</div>
<div>source myenv/bin/activate</div>
</div>]]></description>
			<link>http://meisw.wdlinux.cn//show-1088-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2026-04-26 15:36</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-897-1.html</guid>
			<title>python3 的安装</title>
			<author>admin</author>
			<description><![CDATA[<p>&nbsp;wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz -c</p>
<div>xz -d Python-3.4.3.tar.xz</div>
<div>tar xvf Python-3.4.3.tar</div>
<div>cd Python-3.4.3</div>
<div>./configure --prefix=/usr</div>
<div>make</div>
<div>make install</div>
<div>&nbsp;</div>
<div>ln -sf /usr/bin/python3.4 /usr/bin/python</div>]]></description>
			<link>http://meisw.wdlinux.cn//show-897-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2016-12-18 19:56</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-896-1.html</guid>
			<title>pip安装</title>
			<author>admin</author>
			<description><![CDATA[<p>&nbsp;<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">pip安装方法</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;Pip 是安装python包的工具，提供了安装包，列出已经安装的包，升级包以及卸载包的功能。</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;Pip 是对easy_install的取代，提供了和easy_install相同的查找包的功能，因此可以使用easy_install安装的包也同样可以使用pip进行安装。</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;安装Pip</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;Pip的安装可以通过源代码包，easy_install或者脚本。</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;下面介绍一下各种安装方法：</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;源代码方式：</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ wget https://pypi.python.org/packages/source/p/pip/pip-1.2.1.tar.gz （替换为最新的包）</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ tar xzf pip-1.2.1.tar.gz</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ cd pip-1.2.1.tar.gz</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ python setup.py install</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;easy_install:</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ easy_install pip</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;get_pip.py 脚本：</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ curl -0 https://raw.github.com/pypa/pip/master/contrib/get-pip.py</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ sudo python get-pip.py</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;OK, 下面来看一下Pip的使用</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;安装package</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ pip install Markdown</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;列出安装的packages</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ pip freeze</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;安装特定版本的package</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;通过使用==, &gt;=, &lt;=, &gt;, &lt;来指定一个版本号。</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ pip install 'Markdown&lt;2.0'</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ pip install 'Markdown&gt;2.0,&lt;2.0.3'</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;升级包</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;升级包到当前最新的版本，可以使用-U 或者 --upgrade</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ pip install -U Markdown</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;卸载包</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;$ pip uninstall Markdown</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;查询包</span><br style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);" />
<span style="color: rgb(61, 70, 77); font-family: 'Pingfang SC', STHeiti, 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, sans-serif; font-size: 16px; line-height: 28px; background-color: rgb(248, 248, 248);">&nbsp; &nbsp;pip search &quot;Markdown&quot;</span></p>]]></description>
			<link>http://meisw.wdlinux.cn//show-896-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2016-12-18 19:55</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-368-1.html</guid>
			<title>Python代码加密中源码保护pyc文件'字节码'的描述</title>
			<author>admin</author>
			<description><![CDATA[<p>Python代码加密 源码保护--pyc文件'字节码'</p>
<p>关于Python代码加密这一Python的&ldquo;特殊功能&rdquo;在网上好像是没有更多的相关介绍，但是随着越来越多的商业人士对加入Python这一阵营，所以Python代码加密这一计算机语言就显得尤为重要。<br />
内容概要:Python代码加密,源码保护,代码保护,pyc文件 <br />
<br />
关于python代码保护在网上好像一直没有很好的介绍,可能和PYTHON的设计初衷&quot;开源&quot;有关,但越来越多的兄弟写的加入PYTHON阵营,开发工具用途各异,在商业应用中:Python代码加密保护就变的重要了.<br />
下面介绍一下发布PYC文件,做简单代码保护</p>
<p><strong>PYC文件是什么?</strong></p>
<p>pyc文件是python的二进制编译,pyc文件比py文件拥有更快的装载速度，执行速度没有区别。因为pyc文件是二进制文件,不是明文显示,利用这一特性,发布PYC文件隐藏源代码.</p>
<p>命令如下:</p>
<pre><ol class="dp-xml"><li class="alt"><span><span>python&nbsp;-c&nbsp;&quot;import&nbsp;compileall;&nbsp;compileall.<br />compile_dir('目录')&quot;&nbsp;</span></span></li></ol></pre>
<p>&nbsp;</p>
<p>该命令可以为一个目录下的py文件生成pyc文件（包含子目录）在windows平台上的路径书写方式为</p>
<pre><ol class="dp-xml"><li class="alt"><span><span>('C:/python26/pyc')&nbsp;</span></span></li></ol></pre>
<p>&nbsp;</p>
<p>下面符一完整命令: 将目录'C:/python26/pyc'下的所有PY文件 转为PYC文件</p>
<p>&nbsp;</p>
<pre><ol class="dp-xml"><li class="alt"><span><span>?[Copy&nbsp;to&nbsp;clipboard]Download&nbsp;test.py1 &nbsp;</span></span></li><li><span>python&nbsp;-c&nbsp;&quot;import&nbsp;compileall;&nbsp;compileall.<br />compile_dir('C:/python26/pyc')&quot;&nbsp; &nbsp;</span><span>&nbsp;</span></li></ol></pre>
<p>&nbsp;</p>
<p>如果想实现真正的加密:Python代码加密,就要改PYTHON源码,做自己的加密模块了,这方面还没深入了解,不便多说.关于代码加密这块如哪位兄弟还有更好的方法,请多指教.</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-368-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2010-12-28 18:44</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-367-1.html</guid>
			<title>python freeze.py</title>
			<author>admin</author>
			<description><![CDATA[<p>wget <a href="http://svn.python.org/projects/python/trunk/Tools/freeze/freeze.py">http://svn.python.org/projects/python/trunk/Tools/freeze/freeze.py</a><br />
wget <a href="http://svn.python.org/projects/python/trunk/Tools/freeze/hello.py">http://svn.python.org/projects/python/trunk/Tools/freeze/hello.py</a><br />
wget <a href="http://svn.python.org/projects/python/trunk/Tools/freeze/checkextensions.py">http://svn.python.org/projects/python/trunk/Tools/freeze/checkextensions.py</a><br />
wget <a href="http://svn.python.org/projects/python/trunk/Tools/freeze/parsesetup.py">http://svn.python.org/projects/python/trunk/Tools/freeze/parsesetup.py</a><br />
wget <a href="http://svn.python.org/projects/python/trunk/Tools/freeze/makeconfig.py">http://svn.python.org/projects/python/trunk/Tools/freeze/makeconfig.py</a><br />
wget <a href="http://svn.python.org/projects/python/trunk/Tools/freeze/makefreeze.py">http://svn.python.org/projects/python/trunk/Tools/freeze/makefreeze.py</a><br />
wget <a href="http://svn.python.org/projects/python/trunk/Tools/freeze/bkfile.py">http://svn.python.org/projects/python/trunk/Tools/freeze/bkfile.py</a><br />
wget <a href="http://svn.python.org/projects/python/trunk/Tools/freeze/makemakefile.py">http://svn.python.org/projects/python/trunk/Tools/freeze/makemakefile.py</a></p>
<p>&nbsp;</p>
<p>python freeze.py hello.py</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from config.c:18:<br />
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory<br />
make: *** [config.o] Error 1</p>
<p>&nbsp;</p>
<p><font style="background-color: #eeeeee" size="2" face="Courier">yum -y install glibc-devel</font></p>
<p>install g++-multilib</p>
<p>&nbsp;</p>
<p>-----------------</p>
<p>(.text+0x53c1): undefined reference to `PyEval_RestoreThread'<br />
/usr/lib/python2.4/config/libpython2.4.a(posixmodule.o): In function `posix_getcwd':<br />
(.text+0x53d3): undefined reference to `PyString_FromString'<br />
/usr/lib/python2.4/config/libpython2.4.a(posixmodule.o): In function `posix_getcwd':<br />
(.text+0x53f8): undefined reference to `__stack_chk_fail_local'<br />
collect2: ld returned 1 exit status<br />
make: *** [hello] Error 1</p>
<p>在32位机器上正常</p>
<p>-------------------------------</p>
<p>1. 把http://svn.python.org/projects/python/trunk/Tools/freeze/下面的文件下载到一个目录去，后面以其中的hello.py为例<br />
<br />
下载：<br />
<font color="#ff6600"><br />
wget http://svn.python.org/projects/python/trunk/Tools/freeze/<br />
wget `cat index.html | grep li | awk -F\&quot; '{print &quot;http://svn.python.org/projects/python/trunk/Tools/freeze/&quot;$2}'`</font><br />
<br />
2. 安装python的dev包，如python2.5-dev<br />
<br />
3. python /path/to/freeze.py /path/to/hello.py<br />
4. make<br />
<br />
就好了:P<br />
<br />
或者<br />
<br />
python /path/to/freeze.py -o dist /path/to/hello.py<br />
然后进入dist目录，再<br />
make</p>
<p>------------------------</p>
<p><a href="http://wiki.python.org/moin/Freeze">http://wiki.python.org/moin/Freeze</a></p>]]></description>
			<link>http://meisw.wdlinux.cn//show-367-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2010-12-28 17:52</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-352-1.html</guid>
			<title>深入理解Python yield</title>
			<author>admin</author>
			<description><![CDATA[<p><a href="http://www.pythonclub.org/python-basic/yield">http://www.pythonclub.org/python-basic/yield</a></p>
<p><a href="http://blog.chinaunix.net/u3/102568/showart_2383621.html">http://blog.chinaunix.net/u3/102568/showart_2383621.html</a></p>
<p><a href="http://blog.donews.com/limodou/archive/2006/09/04/1028747.aspx">http://blog.donews.com/limodou/archive/2006/09/04/1028747.aspx</a></p>]]></description>
			<link>http://meisw.wdlinux.cn//show-352-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2010-12-19 13:56</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-351-1.html</guid>
			<title>Python模块学习 ---- StringIO, cStringIO 内存文件(转)</title>
			<author>admin</author>
			<description><![CDATA[<p>StringIO的行为与file对象非常像，但它不是磁盘上文件，而是一个内存里的&ldquo;文件&rdquo;，我们可以将操作磁盘文件那样来操作StringIO。一个简单的例子，让你对StringIO有一个感性的认识：</p>
<p>1&nbsp;&nbsp; #coding=gbk <br />
2&nbsp;&nbsp;&nbsp;&nbsp; <br />
3&nbsp;&nbsp; import StringIO, cStringIO, sys <br />
4&nbsp;&nbsp;&nbsp;&nbsp; <br />
5&nbsp;&nbsp; s = StringIO.StringIO(&quot;JGood is a handsome boy&quot;) <br />
6&nbsp;&nbsp; s.write(&quot;JGood is a handsome boy \r\n&quot;) <br />
7&nbsp;&nbsp; s.write('okkkk中国') <br />
8&nbsp;&nbsp; s.seek(0) <br />
9&nbsp;&nbsp; print s.read() <br />
10&nbsp;&nbsp;&nbsp;&nbsp; <br />
11&nbsp;&nbsp; #最后4个字节 <br />
12&nbsp;&nbsp; s.seek(-4, 2) <br />
13&nbsp;&nbsp; print s.read() <br />
14&nbsp;&nbsp;&nbsp;&nbsp; <br />
15&nbsp;&nbsp; #---- 结果 ---- <br />
16&nbsp;&nbsp; #JGood is a handsome boy&nbsp; <br />
17&nbsp;&nbsp; #okkkk中国 <br />
18&nbsp;&nbsp; #中国</p>
<p>通过例子，我们看到了StringIO的行为，基本与file一致。StringIO提供了一个方法，可以方便的获取其中的数据：StringIO.getvalue()。如果使用read方法获取其中的数据，必须通过seek先设置&quot;文件指针&quot;的位置。</p>
<p>　　Python标准模块中还提供了一个cStringIO模块，它的行为与StringIO基本一致，但运行效率方面比StringIO更好。但使用cStringIO模块时，有几个注意点： 1. cStringIO.StringIO不能作为基类被继承；2. 创建cStringIO.StringIO对象时，如果初始化函数提供了初始化数据，新生成的对象是只读的。所以下面的代码是错误的：s = cStringIO.StringIO(&quot;JGood\n&quot;); s.write(&quot;OOOKKK&quot;);</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-351-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2010-12-19 11:43</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-349-1.html</guid>
			<title>python</title>
			<author>admin</author>
			<description><![CDATA[<p>source = ['/home/swaroop/byte', '/home/swaroop/bin']<br />
# If you are using Windows, use source = [r'C:\Documents',r'D:\Work'] or somethi<br />
ng like that<br />
# 2. The backup must be stored in a main backup directory<br />
target_dir = '/mnt/e/backup/' # Remember to change this to what you will be usin<br />
g<br />
# 3. The files are backed up into a zip file.<br />
# 4. The name of the zip archive is the current date and time<br />
target&nbsp;&nbsp; =&nbsp;&nbsp; target_dir&nbsp;&nbsp; +&nbsp; time.strftime('%Y%m%d%H%M%S') + '.zip'</p>
<p><br />
if not os.path.exists(today):&nbsp; <br />
&nbsp;&nbsp; os.mkdir(today) # make directory&nbsp; <br />
&nbsp;&nbsp; print 'Successfully created directory', today</p>
<p><br />
comment = raw_input('Enter a comment --&gt; ')<br />
if len(comment) == 0: # check if a comment was entered<br />
&nbsp;&nbsp; target = today + os.sep + now + '.zip'<br />
else:<br />
&nbsp;&nbsp; target = today + os.sep + now + '_' + \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comment.replace(' ', '_') + '.zip'</p>
<p>&nbsp;</p>
<p>zip_command = &quot;zip -qr '%s' %s&quot; % (target, ' '.join(source))<br />
# Run the backup<br />
if os.system(zip_command) == 0:<br />
&nbsp; print 'Successful backup to', target<br />
else:<br />
&nbsp; print 'Backup FAILED'</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-349-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2010-12-18 18:46</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-348-1.html</guid>
			<title>subprocess再解析</title>
			<author>admin</author>
			<description><![CDATA[<p>之前已经写过一篇关于Python subprocess的帖子了，subprocess是Python下标准的用于进程创建、通讯的模块，这里再补充一些，注意：我还一直坚守Python2.x，所以不一定适合Python 3。</p>
<h3>subprocess简单用法</h3>
<p>这是最简单的用法：</p>
<div class="wp_syntax">
<div class="code">
<pre style="font-family: monospace" class="python">p=<span style="color: #dc143c">subprocess</span>.<span style="color: black">Popen</span><span style="color: black">(</span><span style="color: #483d8b">&quot;dir&quot;</span>, shell=<span style="color: #008000">True</span><span style="color: black">)</span>
p.<span style="color: black">wait</span><span style="color: black">(</span><span style="color: black">)</span></pre>
</div>
</div>
<p>shell参数根据你要执行的命令的情况来决定，上面是dir命令，就一定要shell=True了，p.wait()可以得到命令的返回值，没有问题。</p>
<h3><strong>进程通讯</strong></h3>
<p>如果想得到进程的输出，管道是个很方便的方法，这样：</p>
<div class="wp_syntax">
<div class="code">
<pre style="font-family: monospace" class="python">p=<span style="color: #dc143c">subprocess</span>.<span style="color: black">Popen</span><span style="color: black">(</span><span style="color: #483d8b">&quot;dir&quot;</span>, shell=<span style="color: #008000">True</span>, stdout=<span style="color: #dc143c">subprocess</span>.<span style="color: black">PIPE</span>, stderr=<span style="color: #dc143c">subprocess</span>.<span style="color: black">PIPE</span><span style="color: black">)</span>
<span style="color: black">(</span>stdoutput,erroutput<span style="color: black">)</span> = p.<span style="color: black">communicate</span><span style="color: black">(</span><span style="color: black">)</span></pre>
</div>
</div>
<p>p.communicate会一直等到进程退出，并将标准输出和标准错误输出返回，这样就可以得到子进程的输出了，上面，标准输出和标准错误输出是分开的，也可以合并起来，只需要将stderr参数设置为subprocess.STDOUT就可以了，这样子：</p>
<div class="wp_syntax">
<div class="code">
<pre style="font-family: monospace" class="python">p=<span style="color: #dc143c">subprocess</span>.<span style="color: black">Popen</span><span style="color: black">(</span><span style="color: #483d8b">&quot;dir&quot;</span>, shell=<span style="color: #008000">True</span>, stdout=<span style="color: #dc143c">subprocess</span>.<span style="color: black">PIPE</span>, stderr=<span style="color: #dc143c">subprocess</span>.<span style="color: black">STDOUT</span><span style="color: black">)</span>
<span style="color: black">(</span>stdoutput,erroutput<span style="color: black">)</span> = p.<span style="color: black">communicate</span><span style="color: black">(</span><span style="color: black">)</span></pre>
</div>
</div>
<p>如果你想一行行处理子进程的输出，也没有问题：</p>
<div class="wp_syntax">
<div class="code">
<pre style="font-family: monospace" class="python">p=<span style="color: #dc143c">subprocess</span>.<span style="color: black">Popen</span><span style="color: black">(</span><span style="color: #483d8b">&quot;dir&quot;</span>, shell=<span style="color: #008000">True</span>, stdout=<span style="color: #dc143c">subprocess</span>.<span style="color: black">PIPE</span>, stderr=<span style="color: #dc143c">subprocess</span>.<span style="color: black">STDOUT</span><span style="color: black">)</span>
<span style="color: #ff7700; font-weight: bold">while</span> <span style="color: #008000">True</span>:
    buff = p.<span style="color: black">stdout</span>.<span style="color: #dc143c">readline</span><span style="color: black">(</span><span style="color: black">)</span>
    <span style="color: #ff7700; font-weight: bold">if</span> buff == <span style="color: #483d8b">''</span> <span style="color: #ff7700; font-weight: bold">and</span> p.<span style="color: black">poll</span><span style="color: black">(</span><span style="color: black">)</span> <span style="color: #66cc66">!</span>= <span style="color: #008000">None</span>:
        <span style="color: #ff7700; font-weight: bold">break</span></pre>
</div>
</div>
<h3><strong>死锁</strong></h3>
<p>但是如果你使用了管道，而又不去处理管道的输出，那么小心点，如果子进程输出数据过多，死锁就会发生了，比如下面的用法：</p>
<div class="wp_syntax">
<div class="code">
<pre style="font-family: monospace" class="python">p=<span style="color: #dc143c">subprocess</span>.<span style="color: black">Popen</span><span style="color: black">(</span><span style="color: #483d8b">&quot;longprint&quot;</span>, shell=<span style="color: #008000">True</span>, stdout=<span style="color: #dc143c">subprocess</span>.<span style="color: black">PIPE</span>, stderr=<span style="color: #dc143c">subprocess</span>.<span style="color: black">STDOUT</span><span style="color: black">)</span>
p.<span style="color: black">wait</span><span style="color: black">(</span><span style="color: black">)</span></pre>
</div>
</div>
<p>longprint是一个假想的有大量输出的进程，那么在我的xp, Python2.5的环境下，当输出达到4096时，死锁就发生了。当然，如果我们用p.stdout.readline或者p.communicate去清理输出，那么无论输出多少，死锁都是不会发生的。或者我们不使用管道，比如不做重定向，或者重定向到文件，也都是可以避免死锁的。</p>
<h3><strong>异步subprocess</strong></h3>
<p>无论是使用readline还是communicate，这里有个问题是：他们都是同步的，你没有办法在等待子进程输出的同时做点别的什么事情，标准的subprocess是不支持异步和子进程交互的，幸好，幸好，有人提供了Python 3下的异步方法，我移植到Python2.5下面，可以这样用了：</p>
<div class="wp_syntax">
<div class="code">
<pre style="font-family: monospace" class="python">p=<span style="color: #dc143c">subprocess</span>.<span style="color: black">Popen</span><span style="color: black">(</span><span style="color: #483d8b">&quot;dir&quot;</span>, shell=<span style="color: #008000">True</span>, stdout=<span style="color: #dc143c">subprocess</span>.<span style="color: black">PIPE</span>, stderr=<span style="color: #dc143c">subprocess</span>.<span style="color: black">STDOUT</span><span style="color: black">)</span>
<span style="color: #ff7700; font-weight: bold">while</span> <span style="color: #008000">True</span>:
    buff = p.<span style="color: black">asyncread</span><span style="color: black">(</span>timeout=<span style="color: #ff4500">0.5</span><span style="color: black">)</span>
    <span style="color: #ff7700; font-weight: bold">if</span> buff == <span style="color: #483d8b">''</span> <span style="color: #ff7700; font-weight: bold">and</span> p.<span style="color: black">poll</span><span style="color: black">(</span><span style="color: black">)</span> <span style="color: #66cc66">!</span>= <span style="color: #008000">None</span>:
        <span style="color: #ff7700; font-weight: bold">break</span></pre>
</div>
</div>
<p>这里带一个超时去读取子进程的输出，如果超时还没有输出，没关系，父进程可以干点别的什么事情，看起来很棒，subprocess的改动部分代码比较长，不在这里贴了。</p>
<p><strong>关闭</strong><br />
在Python 2.6的subprocess模块中，新增加了一个小的接口就是Terminate，用于进程的终结，可惜可惜，十分遗憾，Windows下，这个Terminate只能杀死subprocess创建的进程，而不能杀死其子进程，如果我们明确知道创建的进程没有子进程，当然可以用这个接口，如果不肯定，则这个接口就没什么用了。</p>
<p>举个简单的例子，如果用shell=True的参数让subprocess创建进程，那么就会多出一个额外的cmd进程，这时用Terminate终结的就是这个cmd进程，而真正那个我们创建的进程则不会被终结。</p>
<p>有很多方法可以对付这个问题，但有一个简单的方法是使用Windows自己提供的taskkill命令，它有一个/T参数，可以杀死一个进程树，正是我们所需要的。subprocess创建的进程有一个pid属性，把pid传给taskkill就ok了。</p>
<p><a href="http://www.liuzhongshu.com/code/subprocess-detail.html">http://www.liuzhongshu.com/code/subprocess-detail.html</a></p>]]></description>
			<link>http://meisw.wdlinux.cn//show-348-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2010-12-18 15:50</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-347-1.html</guid>
			<title>Pyinstaller建立linux下Python的独立可执行文件</title>
			<author>admin</author>
			<description><![CDATA[<p>以下内容假定已安装好Python 2.4/2.5<br />
<strong>一、下载并编译pyinstaller（只需做一次，以后可直接做第二步）</strong><br />
1.下载pyinstaller,现在的版本是1.3<br />
(1)wget http://pyinstaller.hpcf.upr.edu/source/1.3/pyinstaller_1.3.tar.gz<br />
<br />
2.解包进入源码目录<br />
(1)tar zxv pyinstaller_1.3.tar.gz<br />
(2)cd pyinstaller-1.3/source/linux<br />
<br />
3.编译源代码<br />
(1)python Make.py 生成python的 .pyc文件<br />
<br />
如无错误，则出现如下提示（只有一行）：<br />
Now run &quot;make&quot; to build the targets: ../../support/loader/run ../../support/loader/run_d<br />
<br />
(2)make 连接生成linux的 .o 文件<br />
<a name="entrymore"></a><br />
4.生成编译配置文件<br />
(1)python Configure.py 生成config.dat配置文件<br />
<br />
<strong>二、编译独立运行的python可执行文件</strong><br />
<br />
1.生成spec文件<br />
python pyinstaller-1.3/Makespec.py --onefile --upx linuxlaptop.py<br />
<br />
参数说明：<br />
--onefile 生成单文件<br />
--upx 生成压缩的文件（可减小执行文件体积，需先安装upx软件包）<br />
<br />
<br />
2.生成最终的可执行文件<br />
python pyinstaller-1.3/Build.py linuxlaptop.spec<br />
<br />
执行完成后将在当前目录生成可执行的linuxlaptop文件，如有问题欢迎与我交流：linuxlaptop.cn。<br />
原文：<a href="http://bbs.chinaunix.net/thread-1328460-1-1.html" target="_blank">http://bbs.chinaunix.net/thread-1328460-1-1.html</a><br />
<br />
============================个人实践=============================<br />
系统：Ubuntu 8.0.4<br />
安装相关包：apt-get install libc6-dev python-dev zlib1g-dev<br />
cd source/linux<br />
python ./Make.py<br />
make</p>
<div class="quote">
<div class="quote-content"><br />
cd ../../<br />
python Configure.py<br />
/pyinstaller-1.3/Makespec.py --onedir --icon=img/imac.ico my.py<br />
python /pyinstaller-1.3/Build.py my.spec</div>
</div>
<p><br />
这时会提示pyinstaller-1.3中的几个包语法错误，估计源码包是在window下调试产生unix不识别的字符，典型的是换行符。<br />
安装dos2unix:sudo apt-get install tofrodos<br />
dos2unix /pyinstaller-1.3/pyinstaller-1.3/optparse.py......(6个文件左右)<br />
<br />
再运行：python /pyinstaller-1.3/Build.py my.spec<br />
搞定，生成了distmy目录，里头有好多.o文件，类似于win下的dll:)</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-347-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-32-1.html">pytyon</category>
			<pubDate>2010-12-18 00:39</pubDate>
		</item>
	</channel>
</rss>
