pip 类似 RedHat 里面的 yum,用来安装 Python 包非常方便。本节详细介绍pip的安装、以及使用方法。

安装部署

Yum 安装

yum -y install python-pip

源码安装

下载源码:

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

安装:

# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install

pip 使用详解

pip安装包

# pip install SomePackage
  [...]
  Successfully installed SomePackage

pip 查看已安装的包

# pip show --files SomePackage
  Name: SomePackage
  Version: 1.0
  Location: /my/env/lib/pythonx.x/site-packages
  Files:
   ../somepackage/__init__.py
   [...]

pip 检查哪些包需要更新

# pip list --outdated
  SomePackage (Current: 1.0 Latest: 2.0)

pip 升级包

# pip install --upgrade SomePackage
  [...]
  Found existing installation: SomePackage 1.0
  Uninstalling SomePackage:
    Successfully uninstalled SomePackage
  Running setup.py install for SomePackage
  Successfully installed SomePackage

pip 卸载包

$ pip uninstall SomePackage
  Uninstalling SomePackage:
    /my/env/lib/pythonx.x/site-packages/somepackage
  Proceed (y/n)? y
  Successfully uninstalled SomePackage

查看待更新包

pip list --outdate
pygpgme (Current: 0.1 Latest: 0.3)
pycurl (Current: 7.19.0 Latest: 7.19.3.1)
iniparse (Current: 0.3.1 Latest: 0.4)

下载包

旧版 pip 下载方式:

pip install --download /pip -r requirements.txt

pip 9, 10 版本的下载方式:

pip download -d /pip -r requirements.txt

pip 使用示例

安装 python redis

# pip install redis

卸载 python redis

# pip uninstall redis
Uninstalling redis:
  /usr/lib/python2.6/site-packages/redis-2.9.1-py2.6.egg-info
.....省略一些内容....
Proceed (y/n)? y
  Successfully uninstalled redis

pip参数解释

pip –help

# pip --help

Usage:   
  pip <command> [options]

Commands:
  install                     安装包.
  uninstall                   卸载包.
  freeze                      按着一定格式输出已安装包列表
  list                        列出已安装包.
  show                        显示包详细信息.
  search                      搜索包,类似yum里的search.
  wheel                       Build wheels from your requirements.
  zip                         不推荐. Zip individual packages.
  unzip                       不推荐. Unzip individual packages.
  bundle                      不推荐. Create pybundles.
  help                        当前帮助.

General Options:
  -h, --help                  显示帮助.
  -v, --verbose               更多的输出,最多可以使用3次
  -V, --version               现实版本信息然后退出.
  -q, --quiet                 最少的输出.
  --log-file <path>           覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
  --log <path>                不覆盖记录verbose输出的日志.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --timeout <sec>             连接超时时间 (默认15秒).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --cert <path>               证书.

pip install

[root@xiexianbin_cn ~]# pip help install

Usage:   
  pip install [options] <requirement specifier> [package-index-options] ...
  pip install [options] -r <requirements file> [package-index-options] ...
  pip install [options] [-e] <vcs project url> ...
  pip install [options] [-e] <local project path> ...
  pip install [options] <archive url/path> ...

Description:
  Install packages from:
  
  - PyPI (and other indexes) using requirement specifiers.
  - VCS project urls.
  - Local project directories.
  - Local or remote source archives.
  
  pip also supports installing from "requirements files", which provide
  an easy way to specify a whole environment to be installed.

Install Options:
  -c, --constraint <file>     Constrain versions using the given constraints file. This option can be used multiple times.
  -e, --editable <path/url>   Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url.
  -r, --requirement <file>    Install from the given requirements file. This option can be used multiple times.
  -b, --build <dir>           Directory to unpack packages into and build in.
  -t, --target <dir>          Install packages into <dir>. By default this will not replace existing files/folders in <dir>. Use
                              --upgrade to replace existing packages in <dir> with new versions.
  -d, --download <dir>        Download packages into <dir> instead of installing them, regardless of what's already installed.
  --src <dir>                 Directory to check out editable projects into. The default in a virtualenv is "<venv path>/src". The
                              default for global installs is "<current dir>/src".
  -U, --upgrade               Upgrade all specified packages to the newest available version. The handling of dependencies depends on the
                              upgrade-strategy used.
  --upgrade-strategy <upgrade_strategy>
                              Determines how dependency upgrading should be handled. "eager" - dependencies are upgraded regardless of
                              whether the currently installed version satisfies the requirements of the upgraded package(s). "only-if-
                              needed" -  are upgraded only when they do not satisfy the requirements of the upgraded package(s).
  --force-reinstall           When upgrading, reinstall all packages even if they are already up-to-date.
  -I, --ignore-installed      Ignore the installed packages (reinstalling instead).
  --ignore-requires-python    Ignore the Requires-Python information.
  --no-deps                   Don't install package dependencies.
  --install-option <options>  Extra arguments to be supplied to the setup.py install command (use like --install-option="--install-
                              scripts=/usr/local/bin"). Use multiple --install-option options to pass multiple options to setup.py
                              install. If you are using an option with a directory path, be sure to use absolute path.
  --global-option <options>   Extra global options to be supplied to the setup.py call before the install command.
  --user                      Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on
                              Windows. (See the Python documentation for site.USER_BASE for full details.)
  --egg                       Install packages as eggs, not 'flat', like pip normally does. This option is not about installing *from*
                              eggs. (WARNING: Because this option overrides pip's normal install logic, requirements files may not behave
                              as expected.)
  --root <dir>                Install everything relative to this alternate root directory.
  --prefix <dir>              Installation prefix where lib, bin and other top-level folders are placed
  --compile                   Compile py files to pyc
  --no-compile                Do not compile py files to pyc
  --no-use-wheel              Do not Find and prefer wheel archives when searching indexes and find-links locations. DEPRECATED in favour
                              of --no-binary.
  --no-binary <format_control>
                              Do not use binary packages. Can be supplied multiple times, and each time adds to the existing value.
                              Accepts either :all: to disable all binary packages, :none: to empty the set, or one or more package names
                              with commas between them. Note that some packages are tricky to compile and may fail to install when this
                              option is used on them.
  --only-binary <format_control>
                              Do not use source packages. Can be supplied multiple times, and each time adds to the existing value.
                              Accepts either :all: to disable all source packages, :none: to empty the set, or one or more package names
                              with commas between them. Packages without binary distributions will fail to install when this option is
                              used on them.
  --pre                       Include pre-release and development versions. By default, pip only finds stable versions.
  --no-clean                  Don't clean up build directories.
  --require-hashes            Require a hash to check each requirement against, for repeatable installs. This option is implied when any
                              package in a requirements file has a --hash option.

Package Index Options (including deprecated options):
  -i, --index-url <url>       Base URL of Python Package Index (default http://pypi.doubanio.com/simple). This should point to a
                              repository compliant with PEP 503 (the simple repository API) or a local directory laid out in the same
                              format.
  --extra-index-url <url>     Extra URLs of package indexes to use in addition to --index-url. Should follow the same rules as --index-
                              url.
  --no-index                  Ignore package index (only looking at --find-links URLs instead).
  -f, --find-links <url>      If a url or path to an html file, then parse for links to archives. If a local path or file:// url that's a
                              directory, then look for archives in the directory listing.
  --process-dependency-links  Enable the processing of dependency links.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output. Option is additive, and can be used up to 3 times (corresponding to WARNING, ERROR, and
                              CRITICAL logging levels).
  --log <path>                Path to a verbose appending log.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --retries <retries>         Maximum number of retries each connection should attempt (default 5 times).
  --timeout <sec>             Set the socket timeout (default 1200.0 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
  --trusted-host <hostname>   Mark this host as trusted, even though it does not have valid or any HTTPS.
  --cert <path>               Path to alternate CA bundle.
  --client-cert <path>        Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
  --cache-dir <dir>           Store the cache data in <dir>.
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check
                              Don't periodically check PyPI to determine whether a new version of pip is available for download. Implied
                              with --no-index.
[root@xiexianbin_cn ~]# 

constraint 格式

MySQL-python===1.2.5;python_version=='2.7'
MarkupSafe===1.0
pypowervm===1.1.6
doc8===0.8.0
pymongo===3.5.1
sqlparse===0.2.3

使用:

pip install -c constraint.txt

requirement 格式

Parsley # MIT
six>=1.9.0 # MIT
packaging>=16.5 # Apache-2.0
requests>=2.14.2 # Apache-2.0
PyYAML>=3.10 # MIT

使用:

pip install -r requirement.txt

完毕。