擅长:python、mysql、java
<p>为了完整起见,下面是vittore的<code>pip.main()</code>的想法,它通过stdout的捕获得到了充实。当然,使用<code>get_installed_distributions()</code>是首选的解决方案。在</p>
<pre><code>import contextlib
@contextlib.contextmanager
def capture():
import sys
from cStringIO import StringIO
oldout,olderr = sys.stdout, sys.stderr
try:
out=[StringIO(), StringIO()]
sys.stdout,sys.stderr = out
yield out
finally:
sys.stdout,sys.stderr = oldout, olderr
out[0] = out[0].getvalue()
out[1] = out[1].getvalue()
with capture() as out:
import pip
pip.main(['list'])
print out
['awscli (1.7.45)\nboto (2.38.0) ...
</code></pre>