在Python中安装包的三种方法

最近一段时间都在学习 Python3(如果你想部署 Python3 的开发环境,可参考

《是时候配置一个Python3的开发环境了》

),乘此机会重新回顾了 Python2 的相关知识,在 Python 中,如果想引入第三方包和库,可以通过工具安装,那么这些安装工具背后做了什么是我非常关心的,这篇本文解释了相关知识:

Python 有多少种类型的包(Python 历史实在太悠久了)。

Python 包安装工具有哪些。

安装第三方包后,生成了哪些文件。

如何将 Python 代码打包成一个包(要基于 Python 包管理工具),该主题不是本文重点。

下面这张图简单解释了包之间的关系:

开发者开发包需要遵循标准,然后发布到 Pypi 中,下一篇文章会描述。

包使用者可以使用多种工具从 Pypi 中下载包(本文的重点)。

Pypi 包含 Meta 信息和源代码仓库。

在我学习 PHP 的时候,没有一种很好的包安装工具(现在可以使用 Composer),而 Python 在标准化方面做的更好。

再一次申明

本文没有在 Python 3 环境下测试。

本文知识点可能陈旧,比如 Python Pypi 官方已做了很大改变。

python 有多种类型的包工具

Distutils:Python 标准的包管理工具,扩展性不够。

Setuptools:比 Distutils 提供了更多的功能,虽然不是官方的,但却是事实上的标准。

Distribute:是 Setuptools 的一个分支,目前已经退出了历史舞台。

Distutils2:又一个被废弃的标准。

这些工具本来就是 Python 的一个包,如果开发者想编写、发布一个包,必须基于这些包进行开发。

三种包类型

tar.gz

egg

whell

开发者可以基于 Distutils 或 Setuptools 生成这三种类型的包。

安装包

(1)源码安装

可以手动下载第三方包,然后手动安装。

安装或更新文件如下:

/usr/local/lib/python2.7/dist-packages/easy-install.pth

/usr/local/lib/python2.7/dist-packages/ywdblogmath-0.1-py2.7.egg

某些被安装的包可能包含 C 代码,所以需要 gcc 这样的工具编译。

(2)easy_install

如果想要使用 easy_install 安装第三方包,需要先安装 setuptools,如果本机没有安装,可以采用源码方式安装,比如:

easy_install 支持从 Pypi(tar.gz或egg包)、URL、本地目录安装软件包:

如果安装的是一个 tar.gz 或 egg 的压缩包,安装后会出现相关文件,如下:

/usr/local/lib/python2.7/dist-packages/easy-install.pth(文件更新)

/usr/local/lib/python2.7/dist-packages/ywdblogmath-0.1-py2.7.egg(文件新增)

特别说明:

easy_install 只能安装包,不能卸载包。

easy_install 不能安装 wheel 格式的包(pip 可以,但 pip 不能安装 egg 格式的包)

(3)pip

如果本机没有安装 pip,可以使用 easy_install 工具安装。

pip 常用命令:

安装 tar.gz 包:

安装后会出现相关文件,如下:

/usr/local/lib/python2.7/dist-packages/ywdblogmath(新增目录)

/usr/local/lib/python2.7/dist-packages/ywdblogmath-0.1-py2.7.egg-info(新增文件)

安装 wheel 包:

安装后会出现相关文件,如下:

/usr/local/lib/python2.7/dist-packages/ywdblogmath (新增目录)

/usr/local/lib/python2.7/dist-packages/ywdblogmath-0.4.dist-info(新增文件)

扫描关注公众号(yudadanwx,虞大胆的叽叽喳喳),了解我的最新文章。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180725G06YVX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券