Python软件包安装的三种常见方法


Posted in Python onJuly 07, 2022

前言

有些 Python 软件包是系统自带的,如 sys,这些包在安装 Python 时已自动安装。但有些包是需要自行下载安装的,如 PIL。这些第三方的软件有的以源代码的形式提供,有的以安装包的形式提供。

安装第三方 Python 包的方法有很多种。本节将介绍一些常见的方法。

1、复制源代码到系统目录

最简单的方法就是将 Python 源文件复制到 sys.path 包含的某个目录下。这样使用“imp ort文件名”即可导入该包。#价位@762459510 免费领取python、爬虫配套实操资料#

下面的代码查看 sys.path 变量包含的路径:

>>> import sys
>>> sys.path
['', '/anaconda3/lib/python37.zip',
'/anaconda3/lib/python3.7',         # 这里要使用的目录
'/anaconda3/lib/python3.7/lib-dynload',
'/anaconda3/lib/python3.7/site-packages',
'/anaconda3/lib/python3.7/site-packages/aeosa']

假定将文件 demo1.py 复制到目录 /anaconda3/lib/python3.7,就是上面的代码第 4 行指定的目录。该文件的内容如下:

""" just a demo package
"""
var_str = "love python"
var_int = 88
def show_usage():
print("just to demo the package installation")

下面就可以使用 demo1 模块了,方法如下:

>>> import demo1
>>> demo1.var_int
88
>>> demo1.__doc__
' just a demo package\n'
>>> demo1.var_str
'love python'
>>> demo1.show_usage()
just to demo the package installation

2、使用PIP进行安装

最近比较流行的安装工具是 PIP,该工具一般在安装 Python 时已成功安装,不需要单独安装。 PIP 是客户端安装工具,安装包来自 PyPI,PIP 从 PyPI 上下载安装包,并且安装在本机。

Python 软件包的制作方需要有 PyPI 账户,这样才可以将自己编写的 Python 包推送到 PyPI 上以供其他用户使用。而对于普通用户来说,并不需要注册 PyPI 账户,只需要本地有 PIP 客户端程序即可。

PIP 提供了安装、卸载、列出安装软件包列表等功能。下面将对这些常见功能一一讲解。

1) 安装

安装的常用命令有两个,一个不指定版本信息,一个指定版本信息。下面分别是它们的格式:

pip install 包名
pip install 包名==版本号

如果已经有了一个安装包,但是希望修改其版本,则需要使用下面的命令:

pip install --upgrade 包名==版本

下面是安装一个 Python 包 lin-demo 的例子。

$ pip install lin-demo
Collecting lin-demo             # 获得lin-demo包的相关信息
Downloading https://files.pythonhosted.org/packages/87          #下载安装包
/35/985a9e7d7fd66bfe82c3c83092bb14d23105e15b5738e02b6c761737c8a8/
lin_demo-0.0.1-py3-none-any.whl
Installing collected packages: lin-demo # 安装
Successfully installed lin-demo-0.0.1  # 安装成功,显示安装的版本

由于 PyPI 是一个开源项目,有些公司也在内部搭建了自己的 PyPI 服务器。有些专有的包可能只能从公司自己搭建的服务器上才能找到,这时就需要指定 PyPI 服务器信息,而不是使用默认的服务器。下面的命令可以指定安装包的来源:

pip install --index-url 包的来源 包名

如果一次要安装很多的软件包,尤其是在搭建开发或者运行环境时,这么一个一个地去执行安装命令进行安装显得不是很友好。

这时可以将要安装的包写在一个文本文件中,如 requirements.txt,然后使用该文本文件作为输入,将文本文件中列出的 Pyhton 包一次安装完成。这相当于是一个批处理命令,其格式如下:

pip install -r 包列表文件

这个包含包列表的文本文件的格式也很简单,一般一行写一个包的名和版本,格式还是“包名==版本”。下面便是一个例子:

CherryPy13.0.0
Jinja22.10
MySQL-python1.2.5
Routes2.4.1
SQLAlchemy1.1.15
Werkzeug0.13
hpc0.2.725
requests2.18.4

2) 卸载

卸载相对来说比较简单。由于一台机器对于某个软件包只能安装某一个版本,而且肯定是安装在本机上的,所以卸载命令没有指定版本、指定源这些参数。下面即为卸载某个包的命令格式:

pip uninstall 包名

3) 查看已经安装的包

有时在 import 语句时会抛出异常,原因可能是某个软件包没有安装,或者安装的版本不对。这时可以通过下面的命令来查看所有本地已经安装的 Python 包:

pip freeze

下面是一个例子:

$ pip freeze
alabaster0.7.12                # 0.7.12是版本信息
allure-pytest2.7.0
allure-python-commons2.7.0
anaconda-client1.7.2
…                                           # 其他的已经安装的Python包
anaconda-navigator1.9.7
anaconda-project0.8.2
appnope==0.1.0

4) 查看某个包的详细情况

如果对某个包的具体作用不是很清楚,或者对其所依赖的包的情况不是很清楚,这时可以查看该包的详细描述,命令如下:

pip show 包名

下面是一个例子:

$ pip show SQLAlchemy
Name: SQLAlchemy
Version: 1.2.11                    # 版本信息
Summary: Database Abstraction Library
Home-page: http://www.sqlalchemy.org
Author: Mike Bayer
Author-email: mike_mp@zzzcomputing.com
License: MIT License
Location: /Library/Python/2.7/site-packages     # 安装位置
Requires:                              # 其所依赖的包
Required-by:                        # 依赖该包的包

5) 查看服务器上的包信息

可以使用命令行来查找包,命令行格式如下:

pip search 包名

然后便可以看到与指定包名类似的包的信息,包括版本和描述信息。下面是查找带有 demo 字样的包的信息:

$ pip search demo                             # 搜索与demo相关的Python包
demo (0.1.0)                            - egg test demo.
rattail-demo (0.1.0)            - Rattail Software Demo
typosquating-demo (1.1.7)       - Typosquating demo attack.
hacmec-demo (0.0.3)             - hACMEc demo application
python-demo (0.0.3)             - python scripts demos
python-demo (0.0.3)             - python scripts demos
my-demo (2019.3.31)             - A demo for python packaging.
pysp2tf-demo (0.11)             - PySpark and TF demo
flask-demo (1.0.0)                      - demo template based on flask
agora-demo (0.1.0)              - A demo testing configuration and dataset
                                                                  management.
version-demo (0.0.3)                    - Just demo for checking how is version work
smooth-demo (0.1)                       - Tool to automate giving a demo on command line
pypi-task-demo (0.0.1)                  - PyPI demo
…                                                             # 省略一些包
jdhp-setuptools-demo (0.2)              - A snippet to test setuptools and PyPI
flask_neglog (0.0.2)                    - demo
mylittlepypiproject (0.0.4)             - A demo
flask_aide (0.0.1)                              - demo
mypypiproject (0.0.4)                   - A demo
my_little_pypi_project (0.0.4)          - A demo
ccq18-hello (0.2)                               - demos
hykpyp (0.1)                                    - this is demo
Flask-Kits (0.0.24)                     - demo
longj_demo (1.2.1)                      - this is a demo
demo-project-test-time (1.1111115)      -
openerp-web-tests-demo (7.0.406)        - Demonstration of web/javascript tests

当然,也可以在 PyPI 网站上进行查找。打开地址 https://pypi.org/,可以看到如图 1 所示的页面。

Python软件包安装的三种常见方法

图 1 PyPI的主页面

在搜索框内输入 demo,按 Enter 键,即可看到搜索到的与 demo 相关的 Python 包,如图 2 所示。

Python软件包安装的三种常见方法

图 2 搜索 demo 相关的 Python 包

3、使用easy_install和setup进行安装

有些老的 Python 包可能没有放在 PyPI 服务器上,这时就需要使用 easy_install 来进行安装了。

使用 easy_install 安装其他软件包之前需要首先安装 easy_install 这个工具,步骤如下:

  • 从 http://peak.telecommunity.com/dist/ 下载 ez_steup.py 到本地。
  • 运行刚下载的 ez_setup.py。

这时在 Python 的系统目录下便可以看到文件 easy_install,这就是用来进行包安装的工具。现在直接运行命令“easy_install包名”即可安装需要的包。

有些模块的源代码中包含 setup.py 文件,这时一般使用下面的命令便可以完成安装任务:

python setup.py install

例如有一个 Python 包叫作 send2trash,其源代码地址是 https://github.com/hsoft/send2trash,下载源代码,然后可以使用源代码中的 setup.py 来进行安装。

本节介绍的安装方法并不常用,只有在安装某些特殊的包时才会用到。多数 Python 包都可以通过 PIP 进行安装,如本教程介绍的第三方 Python 包都是可以使用 PIP 进行安装的。

总结

到此这篇关于Python软件包安装的三种常见方法的文章就介绍到这了,更多相关Python软件包安装内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现TCP服务器端与客户端的方法详解
Apr 30 Python
python如何重载模块实例解析
Jan 25 Python
Python中str.join()简单用法示例
Mar 20 Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 Python
使用python 将图片复制到系统剪贴中
Dec 13 Python
python函数不定长参数使用方法解析
Dec 14 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
Python如何实现远程方法调用
Aug 07 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
利用python实现后端写网页(flask框架)
Feb 28 Python
python实现调用摄像头并拍照发邮箱
Apr 27 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 #Python
Python实现数据的序列化操作详解
Jul 07 #Python
Python如何利用pandas读取csv数据并绘图
Python可视化神器pyecharts绘制水球图
Jul 07 #Python
python数字图像处理之图像自动阈值分割示例
Python 读取千万级数据自动写入 MySQL 数据库
Jun 28 #Python
python数字图像处理:图像简单滤波
Jun 28 #Python
You might like
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
php 获取客户端的真实ip
2009/11/30 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
PHP时间类完整代码实例
2021/02/26 PHP
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
Python修改Excel数据的实例代码
2013/11/01 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
爱普生美国官网:Epson美国
2018/11/05 全球购物
护士实习自我鉴定
2013/10/22 职场文书
初中女生自我鉴定
2013/12/19 职场文书
善意的谎言事例
2014/02/15 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
单位接收函范文
2015/01/30 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电