原文链接:http://www.juzicode.com/archives/576
Python越来越受大家欢迎的一个最大原因就是其生态环境的丰富,截至到目前(2020.6)在Pypi官网(pypi.org)上已经有241926个项目,1912846个发布版本。
在Python解释器发布的时候内部会集成一些标准的模块,这些模块是经过Python官方严格测试后和解释器一起发布的,经过了充分的验证。选用合适的模块可以加快项目进度,避免重复“造轮子”。
打开Python安装路径,找到lib文件夹下,有很多文件夹和.py文件,这些就是Python发布的标准模块:
1 导入库文件方式
导入模块的方式有如下几种:
(1)import module #导入模块 (2)import module as alias #as后面跟模块别名,适用一些长名字模块 (3)from module import * #导入模块中所有的函数、类或者变量 (4)from module import x,y,z #导入模块中名称为x,y,z的函数、类或者变量 |
使用第(1)种方式在调用模块中的函数、类或者变量,需要使用“module名称.”作为前缀,第(2)种方式需要使用“alias别名.”作为前缀,使用第(3)种方式则可以直接使用模块中的函数、类或者变量,而且不能带前缀;第(4)种方式则只能使用模块中的名为x,y或z的函数、类或者变量,而且不能带前缀。下面来看一个例子,打印出模块keyword的kwlist变量保存的Python关键字:
方式(1):
import keyword
print('keyword.kwlist:\n',keyword.kwlist) #调用kwlist,使用keyword.作为前缀
==========结果==========
keyword.kwlist:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
方式(2):
import keyword as kw
print('kw.kwlist:\n',kw.kwlist) #调用kwlist,使用keyword.作为前缀
==========结果==========
kw.kwlist:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
方式(3):
from keyword import *
print('kwlist:\n',kwlist) #调用kwlist,直接使用kwlist变量名称
==========结果==========
kwlist:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
方式(4):
from keyword import kwlist
print('kwlist:\n',kwlist) #调用kwlist,直接使用kwlist变量名称
==========结果==========
kwlist:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
2 安装库文件
相比于pypi官网上的库文件,跟随Python解释器发布的标准库文件数量是非常少的,要使用这些pypi官网上的库文件就需要另行安装,好在Python做了非常方便的pip工具安装这些模块。安装好的模块保存在Lib文件夹的site-packages目录下,下图是一个比较干净的site-packages目录,目前还没有安装其他的第三方模块:
2.1 pip
如果安装Python解释器时选择了Add Path选项(见《Python基础教程1–开发环境》),就可以在cmd命令行下直接使用pip命令进行模块的安装,pip命令的最简单的格式是这样的:
pip install modulename
其中modulename是要安装的模块名称,比如安装一个名称为six的模块:
如果出现Successfully installed mudulename的提示信息,表明模块安装成功。同时进入到site-packages目录下,也可以看到出现了相应的文件.py文件或者文件夹:
还有一种方式是使用python -m pip 的命令进行安装,这种方式下pip作为python的一个模块调用,效果是一样的:
python -m pip install mudulename
Pypi.org毕竟是在国外,有时候下载不太稳定,或者网速比较慢,就可以使用一些国内的源进行安装,不使用官方的源时,需要加入-i选项指明选择的源路径:
pip install mudulename -i 选择的源
这里以豆瓣的源(https://pypi.doubanio.com/simple/)为例:
【注意】网址使用http方式会提示不是安全的连接,安装会出现失败,需要使用https方式安装。
如果觉得每次安装模块都需要写 -i + 网址 的方式太过复杂,可以通过配置文件的方式解决,在Windows系统下如果用户名为juzi,找到目录”c:\users\juzi”或”c:\用户\juzi”,新建文件夹pip,再在pip文件夹下新建一个pip.ini文件,写入如下内容:
[global]
index-url= 你选择的源网址
写好配置文件后,以后每次安装模块就不用再输入-i 选型。
2.2、常用国内源
豆瓣:https://pypi.douban.com/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:https://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
2.3、查看安装的模块列表 pip list
E:\juzicode\>pip list
Package Version
----------------- -------
2to3 1.0
astroid 2.4.2
colorama 0.4.3
iso3166 1.0.1
isort 4.3.21
lazy-object-proxy 1.4.3
mccabe 0.6.1
Pillow 7.1.2
pip 19.2.3
pygame 1.9.6
pylint 2.5.3
PySnooper 0.4.1
pyzbar 0.1.8
setuptools 41.2.0
six 1.15.0
toml 0.10.1
tqdm 4.51.0
wrapt 1.12.1
2.4 pip freeze
查看安装模块和版本,显示的形式是模块名==版本号
推荐阅读: