Python基础39-包/模块(三方包安装)

2018-06-17  本文已影响383人  Jacob_LJ

Python基础-包/模块

1 包管理项目

1.2 常用

  1. 名称:distutils
  2. 特点:通过 setup.py 脚本安装
  3. 安装 python 时自带
  1. 名称:setuptools
  2. 特点:
    egg 格式(压缩文件格式),通过 easy_install 安装
    whl 格式(压缩文件格式),通过 pip 安装
  3. '/usr/local/lib/python3.6/site-packages'下没有时需要手动安装

1.2 setuptools 安装

原因:如果包或模块是通过 setuptools包管理器 打包的话,需要安装 setuptools才能安装由其打包的包或模块

1.2.1 手动安装

  1. https://pypi.org/search/?q=setuptools 下载zip 格式文件
  1. 解压后查看 setup 文件



  2. 打开命令行工具

  3. 切换到 setup.py 文件所在目录
    2.3 执行命令,安装到 Python3环境中的 '/usr/local/lib/python3.6/site-packages'
    Python3.x:python3 setup.py install;

1.2.2 通过 pycharm 安装

  1. 进入 pycharm 偏好设置,点击包或模块栏,点击左下角+号,进行搜索添加


2 包或模块托管

3 常见已发布三方包和模块的形式

whl / source
egg

4 安装

4.1 本地安装

  1. 单文件
  1. 对于带有 setup.py 的文件,通过 setup.py 脚本安装
    2.1 打开命令行工具
    2.2 切换到 setup.py 文件所在目录
    2.3 执行命令
    Python3.x:python3 setup.py install;
    Python2.x:python setup.py install;
  1. .egg 文件,使用 setuptools 自带的安装脚本 easy_install 进行安装
    使用 setuptools 的自带安装脚本 easy_install 进行安装
    命令:easy_install xxx.egg
  1. .whl 使用 pip 进行安装
    4.1 使用 easy_install 进行安装
    4.2 使用 pip 进行安装,使用命令: pip install xxx.whl
    (如果当前没有安装过 pip,则同样可以通过easy_install pip 先安装 pip)

4.2 远程安装

以下都支持远程安装三方包

4.3 安装源

5 模块的其他操作

5.1 通过 easy_install 操作

5.1.1 使用文档说明

http://peak.telecommunity.com/DevCenter/EasyInstall

5.1.2 多个 Python 版本的切换安装

easy_install-N.N N.N 用于指明安装在哪个 Python 版本环境中

# 如:Python2.7.14
easy_install-2.7 requests


# 如:Python3.6.41
easy_install-3.6 requests

5.1.3 安装指定版本包

使用语法:easy_install “库名 限定符 版本[, 限定符 版本]”
中括号部分:可选
库名:包的名称
限定符:包括<、>、>=、<=、==

easy_install requests #安装最新版本
easy_install "requests >= 2.14.1" #安装大于或等于2.14.1版本的最新包
easy_install "requests > 1.0, < 2.0" #安装大于1.0 且小于 2.0 版本的包
easy_install "requests == 2.14.1" #安装 2.14.1版本的包,如果已安装则切换到这个版本

5.1.4 升级三方包

命令:easy_install --upgrade 库名; 或 easy_install -U 库名;

easy_install --upgrade requests

5.1.5 卸载三方包

5.1 手动卸载
* 删除在 easy_install.pth中的包记录
* 删除对应的包文件

easy_install.pth 作用

  1. 记录当前通过 easy_install 已经安装的模块,如果该模块已安装多个版本,则该文件记录的是最后一次安装的版本,也就是当前激活使用的版本
  2. 用于导入模块时的路径检索
    导入检索路径为:内置路径 > sys.path

sys.path

[
'', 
'/usr/local/Cellar/python3/3.6.4_1/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', 
'/usr/local/Cellar/python3/3.6.4_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6', 
'/usr/local/Cellar/python3/3.6.4_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload',
 '/usr/local/lib/python3.6/site-packages'
]

当前文件所在路径
/python36.zip 安装包路径
/python3.6 安装路径
/lib-dynload 路径
/site-packages 三方库安装路径
+ 对应路径下的.pth文件里描述的路径等

5.2 easy_install -m 包名

Command-Line Options:--multi-version, -m

--multi-version, -m
"Multi-version" mode. Specifying this option prevents easy_install from adding an easy-install.pth entry for the package being installed, and if an entry for any version the package already exists, it will be removed upon successful installation. In multi-version mode, no specific version of the package is available for importing, unless you use pkg_resources.require() to put it on sys.path. This can be as simple as:

from pkg_resources import require
require("SomePackage", "OtherPackage", "MyPackage")
which will put the latest installed version of the specified packages on sys.path for you. (For more advanced uses, like selecting specific versions and enabling optional dependencies, see the pkg_resources API doc.)

Changed in 0.6a10: this option is no longer silently enabled when installing to a non-PYTHONPATH, non-"site" directory. You must always explicitly use this option if you want it to be active.

5.1.6 切换三方安装源

5.2 通过 pip 操作

5.2.1 使用文档说明

https://pip.pypa.io/en/stable/

5.2.2 切换安装源

  1. 一次性修改
pip install --index-url https://pypi.douban.com/simple/ requests
pip install --extra-index-url https://pypi.douban.com/simple/ requests
  1. 永久性修改
1 进入到用户目录下
cd ~
2 在该目录下创建.pip 文件夹
mkdir .pip
3 进入到.pip文件夹目录下
cd ~/.pip
4 创建 pip.conf 配置文件
touch pip.conf

然后写入如下内容并保存

[global]
trusted-host =  mirrors.aliyun.com
[install]
index-url = https://mirrors.aliyun.com/pypi/simple

5.2.3 安装在不同的 Python 版本环境中

  1. 方式一
python -m pip install requests # Python2.x
或
python3 -m pip install requests # Python3.x
  1. 方式二
py -2 -m pip install requests # Python2.x
或
py -3 -m pip install requests # Python3.x

py:Python 的安装包实际上在系统中安装了一个启动器
启动器可以调用不同版本的 Python 去执行某些脚本py -2 或 py -3

5.2.4 查看包

  1. 所有已经安装的包 pip list
  2. 不被依赖的包 pip -list --not-required
  3. 过期的包 pip list --outdated
  4. 查看某个包的具体信息 pip show xxxx

5.2.5 搜索包

pip search xxxx
或
pip search -i 检索地址 xxxx

5.2.6 安装特定版本

pip requests #安装最新版本
pip install "requests >= 2.14.1" #安装大于或等于2.14.1版本的最新包
pip install "requests > 1.0, < 2.0" #安装大于1.0 且小于 2.0 版本的包
pip install "requests == 2.14.1" #安装 2.14.1版本的包,如果已安装则切换到这个版本

5.2.7 升级包

pip install --upgrade requests

5.2.8 卸载包

pip uninstall xxx

5.2.9 生成冻结需求文本且根据冻结需求文本安装

使用场景:可以将当前安装的三方包记录,存储到指定的文档中。以后就可以根据该需求文件去安装三方包

pip freeze
pip freeze > ./requirements.text
pip install -r requirements.text

Question:

  1. pip install 问题
$ pip install requests                                                       
Collecting requests
  Could not fetch URL https://pypi.python.org/simple/requests/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping

执行以下命令

curl https://bootstrap.pypa.io/get-pip.py | python
  1. 如果直接执行 pip list 等命令出现问题时,可以通过执行脚本形式使用python3 -m pip list方式处理
$ pip list                                                                   
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 9, in <module>
    load_entry_point('pip==9.0.1', 'console_scripts', 'pip')()
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/__init__.py", line 219, in main
    cmd_name, cmd_args = parseopts(args)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/__init__.py", line 159, in parseopts
    parser = create_main_parser()
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/__init__.py", line 137, in create_main_parser
    parser = ConfigOptionParser(**parser_kw)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/baseparser.py", line 148, in __init__
    self.config.read(self.files)
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ConfigParser.py", line 305, in read
    self._read(fp, filename)
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ConfigParser.py", line 546, in _read
    raise e
ConfigParser.ParsingError: File contains parsing errors: /Users/minyu_leung/.pip/pip.conf
    [line  3]: ' trusted-host =  mirrors.aliyun.com\n'
    [line  5]: ' index-url = https://mirrors.aliyun.com/pypi/simple\n'
$ python3 -m pip list                                                        
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
backports.functools-lru-cache (1.4)
certifi (2017.11.5)
chardet (3.0.4)
cycler (0.10.0)
easy-timer (0.0.4)
facebook-wda (0.2.2.dev1)
graphviz (0.8.3)
idna (2.6)
Jinja2 (2.10)
MarkupSafe (1.0)
matplotlib (2.1.1)
mog-commons (0.2.3)
numpy (1.13.3)
objgraph (3.4.0)
olefile (0.44)
opencv-python (3.4.0.12)
Pillow (4.3.0)
pip (9.0.1)
pyparsing (2.2.0)
python-dateutil (2.6.1)
pytz (2017.3)
requests (2.18.4)
setuptools (36.5.0)
six (1.11.0)
urllib3 (1.22)
wheel (0.30.0)
上一篇下一篇

猜你喜欢

热点阅读