天天看點

python pip包管理

pip 是一個安裝和管理 Python 包的工具 , 是 easy_install 的一個替換品。本文将詳細說明 安裝 pip 的方法和 使用 pip 的一些基本操作如安裝、更新和解除安裝 python 包。

distribute是setuptools的取代(Setuptools包後期不再維護了),pip是easy_install的取代。

pip的安裝需要setuptools 或者 distribute,如果你使用的是Python3.x那麼就隻能使用distribute因為Python3.x不支援setuptools。

distribute安裝:

<code>unzip distribute-0.7.3.zip</code>

<code>cd distribute-0.7.3</code>

<code>python2.7 setup.py install</code>

setuptools安裝:

#https://pypi.python.org/packages/source/s/setuptools/

#wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz

#tar zxvf setuptools-1.4.2.tar.gz

#cd setuptools-1.4.2

#python setup.py install

安裝後預設安裝到 /usr/local/bin/easy_install

建立軟連接配接: ln -s /usr/local/bin/easy_install /usr/bin/easy_install

#easy_install --version

安裝Pip:

wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz

tar zxvf pip-1.4.1.tar.gz

cd pip-1.4.1

python setup.py install

安裝後預設安裝到 /usr/local/bin/pip

建立軟連接配接:ln -s /usr/local/bin/pip /usr/sbin/pip

測試:

pip install simplejson

下面來看一下pip的使用:

安裝特定版本的package,通過使用==, &gt;=, &lt;=, &gt;, &lt;來指定一個版本号。

pip install 'Markdown&lt;2.0'

pip install 'Markdown&gt;2.0,&lt;2.0.3'

更新包到目前最新的版本,可以使用-U 或者 --upgrade

pip install -U Markdown

解除安裝包

pip uninstall Markdown

查詢包

pip search "multiprocessing"

列出安裝的packages

$ pip freeze

工作中使用pip遇到的問題:

一、

[root@storm60-22 himalayas]# pip

Traceback (most recent call last):

  File "/usr/bin/pip", line 5, in &lt;module&gt;

    from pkg_resources import load_entry_point

  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2782, in &lt;module&gt;

  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 662, in require

  File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 565, in resolve

pkg_resources.DistributionNotFound: pip==1.3.1

其實發生這個問題是因為:雖然你已經把Python更新到了2.7版本,但是pip仍然是原來的,版本,仍然在原來python的site-package裡面 

cd /usr/lib/python2.6/site-packages/

 cp -r pip* /usr/local/lib/python2.7/site-packages/

備注:

[root@kooxoo90-171 pip-1.4.1]# find / -name python2.6

/home/himalayas/virtualenv/python2.6-sk/lib/python2.6

/home/himalayas/virtualenv/python2.6-sk/include/python2.6

/home/himalayas/virtualenv/python2.6-sk/bin/python2.6

/usr/lib64/python2.6

/usr/lib/python2.6

/usr/include/python2.6

/usr/bin/python2.6

[root@kooxoo90-171 pip-1.4.1]# find / -name python2.7

/home/himalayas/virtualenv/python2.7-fd/lib/python2.7

/home/himalayas/virtualenv/python2.7-fd/include/python2.7

/home/himalayas/virtualenv/python2.7-fd/bin/python2.7

/usr/local/lib/python2.7

/usr/local/include/python2.7

/usr/local/bin/python2.7

/usr/bin/python2.7

[root@kooxoo90-171 pip-1.4.1]#

二、

python setup.py install 安裝了其它子產品之後,pip freeze 就報錯,不能使用來檢視目前已安裝的子產品了(備注:目前pip的版本是1.4.1,是用上面的方法安裝的)。報錯如下:

[root@kooxoo90-171 pip-1.4.1]# pip freeze

Exception:

  File "/usr/local/lib/python2.7/site-packages/pip-1.4.1-py2.7.egg/pip/basecommand.py", line 134, in main

    status = self.run(options, args)

  File "/usr/local/lib/python2.7/site-packages/pip-1.4.1-py2.7.egg/pip/commands/freeze.py", line 73, in run

    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)

  File "/usr/local/lib/python2.7/site-packages/pip-1.4.1-py2.7.egg/pip/__init__.py", line 194, in from_dist

    assert len(specs) == 1 and specs[0][0] == '=='

AssertionError

Storing complete log in /root/.pip/pip.log

[root@kooxoo90-171 pip-1.4.1]# 

解決方法:

重新安裝pip,使用一個高版本的pip,方法如下:

wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate

tar xf pip-1.5.4.tar.gz 

cd pip-1.5.4

python setup.py  install

ln -s /usr/local/bin/pip /usr/sbin/pip

三、easy_install 報錯:

[root@engine1-34 wuxy]# easy_install --version

  File "/usr/bin/easy_install", line 5, in &lt;module&gt;

pkg_resources.DistributionNotFound: distribute==0.6.10

[root@engine1-34 wuxy]# vim /usr/bin/easy_install

#!/usr/bin/python2.6

# EASY-INSTALL-ENTRY-SCRIPT: 'distribute==0.6.10','console_scripts','easy_install'

__requires__ = 'distribute==0.6.10'

import sys

from pkg_resources import load_entry_point

if __name__ == '__main__':

    sys.exit(

        load_entry_point('distribute==0.6.10', 'console_scripts', 'easy_install')()

    )

将python的版本改成2.6

      本文轉自Tenderrain 51CTO部落格,原文連結:http://blog.51cto.com/tenderrain/1597900,如需轉載請自行聯系原作者