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,如需轉載請自行聯系原作者