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,通过使用==, >=, <=, >, <来指定一个版本号。
pip install 'Markdown<2.0'
pip install 'Markdown>2.0,<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 <module>
from pkg_resources import load_entry_point
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2782, in <module>
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 <module>
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,如需转载请自行联系原作者