Python入门之(5.2)模块

目录

模块

1.1模块的创建

1.2导入模块

1.3包

1.4常用的内置模块

1.5第三方模块


模块

Python应用程序是由一系列模块组成的,每个PY文件就是一个模块,每个模块也是一个独立的命名空间。因此,允许在不同的模块中定义相同的变量名而不会发生冲突。模块的概念类似于C语言中的lib库。如果需要使用模块中的函数或其他对象,必须导入该模块才可以使用。系统默认的模块不需要导入。

使用模块的优点有:首先,提高了代码的可维护性;其次,提高了代码的可重用性,模块可以被其他模块引用。Python提供了很多内置模块和第三方模块;最后,可以避免函数名和变量名冲突,即允许在不同模块中定义同名的对象。

为了避免模块名冲突,Python引入了按目录来组织模块的方法,称为包(package)。

1.1模块的创建

在文本编辑器中输入Python代码,并以.py作为扩展名进行保存的文件,都认为是Python的一个模块。本书之前所有的任务程序都是一个Python模块。

注意:

  1. 对于那些可重用的函数,可以搜集起来,放到一个模块中。建议模块名使用短名字且都是小写字母。文件名中不包含点(.),且扩展名是.py;
  2. 一个模块顶层定义的变量会自动变成该模块的属性。可以通过模块名.变量名来访问模块的属性;
  3. 模块应放在要导入的程序所在的文件夹下,或放到sys.path列出的某个文件夹中;
  4. 如果导入和要导入的模块中存在同名的__version__,将发生名字冲突;
  5. 模块除了函数和属性定义,还可以包括可执行的代码。这些代码通常用来初始化该模块,且仅在该模块第一次导入时才会执行;
  6. 每个模块都有一个__name__属性,当其值是__main__时,表明该模块自身在运行,否则将被引入;
  7. 如果想在模块被引入时模块中的某一程序块不执行,可以用__name__属性来使程序块仅在模块自身运行时执行。

模块导入和执行程序示例:

#模块名称为ssss.py,存放路径为E:/PycharmProjects/PythonTest
#打印当前模块的__name__变量值,只要模块第一次加载,都会执行
#__name__变量是全局变量,用来标识模块名称
print(__name__)
def func(a,b):   #定义一个幂函数
    return a**b
#判断是否是模块自身在运行
#通过这个方式,可以使模块既可以当作顶层文件执行,也可以当作lib库供其他模块使用
if __name__=='__main__':
    #如果是模块自身在运行,执行如下代码
    import sys   #导入包sys
    #在模块执行时,可以在文件名之后跟用空格分隔的参数
    #这些参数存放在列表对象sys.argv中,可以在程序中按如下方式访问
    #第一个参数值是文件路径及文件名
    print('sys.argv[0]={}'.format(sys.argv[0]))
    #后面是用逗号分隔的参数,本例调用方式为
    #python ssss.py 5 2
    print('sys.argv[1]={},sys.argv[2]={}'.format(sys.argv[1],sys.argv[2]))
    #把文件名后跟的两个参数由字符串转换为整型
    a=int(sys.argv[3])
    b=int(sys.argv[4])
    print(func(a,b))        #输出函数调用结果
    #如果不是模块自身在运行,而是被导入的,执行如下代码
else:
    print('this is main of module ssss.py')

运行结果为:

E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/ssss.py python ssss.py 5 2
__main__
sys.argv[0]=E:/PycharmProjects/PythonTest/ssss.py
sys.argv[1]=python,sys.argv[2]=ssss.py
25

Process finished with exit code 0

导入示例模块的代码如下:

#模块名称为muModu.py,存放路径为E:/PycharmProjects/PythonTest
#导入之前定义的模块
import ssss
#判断是否是模块自身在运行
if __name__=='__main__':
    #如果模块是自身在运行,执行如下代码
    print('this is main of module "muModu.py"')
    print('hello')
else:
    #如果不是模块自身在运行,而是被导入的,执行如下代码
    print('this is main of module ssss.py')

运行结果为:

E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/muModu.py
ssss
this is main of module ssss.py
this is main of module "muModu.py"
hello

Process finished with exit code 0

 

1.2导入模块

通常,模块为一个文件,可以导入后使用。可以作为模块的文件类型有.py,.pyo、.pyc、.pyd、.so、.dll等。

导入模块是一个相对耗时的操作,Python使用了一些技巧来加速这个过程。

一个办法是创建后缀为.pyc的字节编译文件,用于将程序转换为中间格式,且该字节编译文件是平台无关的。因为导入模块的部分操作已经预先完成,所以将加快导入速度。

Python中有3种导入模块的方法,下面逐一介绍。

1. import语句导入

语法格式:   import 模块名[,模块名1,…]

功能:导入模块后,就可以引用其任何公共的函数、类或属性

注意:

  1. 用这种方式导入的模块,是在当前的命名空间中建立了一个该模块的引用。这种引用需使用全称。即在访问导入模块中的函数或属性时,必须加上模块的名字,如模块名.函数名;
  2. 可以用import语句导入多个模块。import导入模块要放在程序头部。最好按照下述顺序:Python标准库模块、Python第三方模块、自定义模块;
  3. 模块导入时,可以使用as关键字来改变模块的引用对象名字;
  4. 多次导入一个模块不会多次执行该模块导入操作,只会执行一次。

模块导入示例程序:

#模块1,名称为modu1.py,存放路径为E:/PycharmProjects/PythonTest
#data,var1是模块属性
data=[1,2,3]
var1=25
def isEven(num):  #定义函数,判断一个数是否是偶数
    if num%2==0:
        return True
    else:
        return False
def isPlalindrome(num):   #定义函数,判断一个数是否是回文数
    return str(num)==str(num)[::-1]    #[::-1]表示取从后向前的元素
#模块1的输出
print('模块modu1中的输出:var1=',var1)
print('模块modu1中的输出:isEven(5)=',isEven(5))
#模块2,名称为modu2.py,存放路径为E:/PycharmProjects/PythonTest
#data、str1是模块属性
data=('a','b','c','d')
def numberOfWords(sentence):   #定义函数,判断字符串中单词的个数
    return len(sentence.split(' '))
def strReverse(zfStr):         #定义函数,对字符串逆置
    li=list(zfStr)
    li.reverse()           #对列表逆置
    return ''.join(li)   #join()函数把列表转为字符串
#模块2的输出
str1='the standard packaging tools are all designed to be used from the command line.'
print('模块modu2中的输出:str1中的单词个数=',numberOfWords(str1))
#模块3,名称为sample5_17.py,存放路径为E:/PycharmProjects/PythonTest
#同时导入两个模块
import modu1,modu2
#第一次导入模块后,首先执行模块1和模块2的代码
#使用全称调用模块中的属性或函数,可以避免两个模块中的全名属性冲突
print('模块sample5_17中输出模块1的属性data:',modu1.data)
print('模块sample5_17中输出模块2的属性data:',modu2.data)
print('模块sample5_17中的输出:var1=',modu1.var1+15)
print('模块sample5_17中的输出:isEven(28)=',modu1.isEven(28))
print('模块sample5_17中的输出:isPlalindrome(12521)=',modu1.isPlalindrome(12521))
#定义与导入模块中同名的对象时,使用本模块中定义的对象
str1='it`s also possible to specify an exact or minimum version directly on the command line'
str2='information'
print('模块sample5_17中的输出:str1中的单词个数=',modu2.numberOfWords(str1))
print('模块sample5_17中的输出:str2翻转=',modu2.strReverse(str2))

运行结果为:

E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/sample5_17.py
模块modu1中的输出:var1= 25
模块modu1中的输出:isEven(5)= False
模块modu2中的输出:str1中的单词个数= 14
模块sample5_17中输出模块1的属性data: [1, 2, 3]
模块sample5_17中输出模块2的属性data: ('a', 'b', 'c', 'd')
模块sample5_17中的输出:var1= 40
模块sample5_17中的输出:isEven(28)= True
模块sample5_17中的输出:isPlalindrome(12521)= True
模块sample5_17中的输出:str1中的单词个数= 15
模块sample5_17中的输出:str2翻转= noitamrofni

Process finished with exit code 0

 

2. from-import语句导入

语法格式:   from 模块名 import *|对象名[,对象名,…]

功能:导入指定函数和模块变量。如果在import之后使用*,则任何只要不是以“__”开始的对象都会被导入。

注意:

  1. 这种导入方式和第一种的区别是所导入的对象直接导入到本地命名空间,因此在访问这些对象时不需要加模块名;
  2. from-import语句常用于有选择地导入某些属性和函数;
  3. 如果导入模块中的属性或函数与要导入的模块有命名冲突,必须使用import模块名语句来避免冲突;
  4. 尽量少用from 模块名 import *,因为较难判定某个特殊的函数或属性的来源,且不利于程序调试和重构。

模块导入示例程序:

#使用from-import语句导入模块
#导入modu1中的部分函数和属性
from modu1 import isEven,data
#导入modu2中的所有对象
from modu2 import *
#导入math模块中的sqrt函数
from math import sqrt
#第一次导入模块后,首先执行modu1和modu2的代码
#所有导入的属性和函数都可以直接使用
#导入的两个模块中同名的变量根据导入顺序进行覆盖,以最后一次导入的为准
#下面两条语句实际上输出的都是第二个模块中的data对象
print('模块sample5_18中输出modu1的属性data=',data)
print('模块sample5_18中输出modu2的属性data=',data)
#没有导入变量var1,因此下面的代码有语法错误
#print('模块sample5_18中的输出:var1=',var1+15)
print('模块sample5_18中的输出:isEven(5)=',isEven(5))
#没有导入函数isPlalindrome(),因此下面的代码有语法错误
#print('isPlalindrome(12521)=',isPlalindrome(12521))
#定义与导入模块中同名的对象时,使用本模块中定义的对象
str1='it`s also possible to specify an exact or minimum version directly on the command line'
str2='information'
print('模块sample5_18中的输出:str1中的单词个数=',numberOfWords(str1))
print('模块sample5_18中的输出:str2翻转=',strReverse(str2))
#sqrt()函数可以直接使用
print('模块sample5_18中的输出:245的开方=',sqrt(245))

运行结果为:

E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/sample5_18.py
模块modu1中的输出:var1= 25
模块modu1中的输出:isEven(5)= False
模块modu2中的输出:str1中的单词个数= 14
模块sample5_18中输出modu1的属性data= ('a', 'b', 'c', 'd')
模块sample5_18中输出modu2的属性data= ('a', 'b', 'c', 'd')
模块sample5_18中的输出:isEven(5)= False
模块sample5_18中的输出:str1中的单词个数= 15
模块sample5_18中的输出:str2翻转= noitamrofni
模块sample5_18中的输出:245的开方= 15.652475842498529

Process finished with exit code 0

 

3. 内建函数__import__()导入

语法格式:      变量名=__import__('模块名')

注意:

  1. __import__()函数的参数是一个字符串。这个字符串可能来自配置文件,也可能是某个表达式的计算结果;
  2. import语句就是调用这个函数进行导入工作的,import sys <==> sys = __import__('sys');
  3. 通常在动态加载时使用__import__()函数。如果加载某个文件夹下的所有模块,但模块名称经常变化时,利用__import__()函数来动态加载所有模块。最常见的是对插件功能的支持。

模块导入示例程序3:

#通过内置的__import__()函数导入模块
#把导入的模块赋值给引用变量m1,用于区分不同的导入模块
m1=__import__('modu1')
m2=__import__('modu2')
#第一次导入模块后,首先执行模块1和模块2的代码
#通过模块的引用变量名.对象名,使用所导入模块中的属性和函数
print('模块sample5_19中输出modu1的属性data=',m1.data)
#可有效区分两个不同模块中的同名对象
print('模块sample5_19中输出modu2的属性data=',m2.data)
print('模块sample5_19中的输出: var1=',m1.var1+15)
print('模块sample5_19中的输出: isEven(5)=',m1.isEven(5))
print('模块sample5_19中的输出: isPlalindrome(12521)=',m1.isPlalindrome(12521))
str1='it`s also possible to specify an exact or minimum version directly on the command line'
str2='information'

print('模块sample5_19中的输出:str1中的单词个数=',m2.numberOfWords(str1))
print('模块sample5_19中的输出:str2翻转=',m2.strReverse(str2))

运行结果为:

E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/sample5_18.py
模块modu1中的输出:var1= 25
模块modu1中的输出:isEven(5)= False
模块modu2中的输出:str1中的单词个数= 14
模块sample5_19中输出modu1的属性data= [1, 2, 3]
模块sample5_19中输出modu2的属性data= ('a', 'b', 'c', 'd')
模块sample5_19中的输出: var1= 40
模块sample5_19中的输出: isEven(5)= False
模块sample5_19中的输出: isPlalindrome(12521)= True
模块sample5_19中的输出:str1中的单词个数= 15
模块sample5_19中的输出:str2翻转= noitamrofni

Process finished with exit code 0

 

4. Python模块搜索路径

Python在导入一个模块时,执行流程如下所示:

  1. 创建一个初始值为空的模块对象;
  2. 把该模块对象追加到sys.module对象中;
  3. 装载模块中的代码,必要时执行编译操作;
  4. 执行该模块中对应的代码。

当执行装载模块时,需要知道模块所在的位置。PVM的搜索路径如下所述:

  1. 在当前目录下搜索该模块;
  2. 在环境变量pythonpath指定的路径表中依次搜索;
  3. 在Python安装路径中搜索。

对于上述路径搜索顺序,如果前两个搜索路径中存在与标准模块同名的模块,将覆盖标准模块。

事实上,上述搜索路径都包含在变量sys.path中。可以很方便地通过sys.path.append(新路径)这样的方式动态添加新路径到搜索路径表中。当目录较复杂时,也可以通过添加环境变量的方式增加搜索路径。

 

1.3包

包是一个有层次的文件目录结构。每个模块对应单个文件,而包对应一个目录。使用标准的import和from-import语句可以导入包中的模块。

包目录下的第一个文件是__init__.py,之后是一些模块文件和子目录。加入子目录中也有__init__.py,那么是这个包的子包。

当把一个包作为模块导入时,实际上导入的是__init__.py文件。__init__.py文件中定义了包的属性和方法,也可以是一个空文件,但必须存在。

对具有下述结构的包导入指定模块:

myModu1/
       __init__.py
       childModul1/
            __init__.py
            modu1.py
            modu2.py

导入其中的模块语句如下:

#导入模块Graphics.Formats.gif,只能以全名访问模块属性
#若模块modul中定义了全局对象S,则访问方式为myModu1.childModu1.modu1.S
import myModu1.childModu1.modu1
#导入模块modul,只能以modul.全局对象名这种方式访问模块属性或函数
#例如,模块modul中定义了全局对象S,则访问方式为modu1.S
from myModu1.childModu1 import modu1
#导入模块modul,并将属性S放入当前命名空间,可以直接访问被导入的属性
#例如,模块modul中定义了全局对象S,则访问方式为print(S)
from myModu1.childModu1.modu1 import S
#只会执行myModul目录下的__init__.py文件,而不会导入任何模块
import myModul

 

1.4常用的内置模块

Python标准库包含了数百个模块,安装Python时会自动安装。一些常用的标准模块如下:

Python中常用的内置模块
类别模块名称功能描述
字符串string通用字符串操作
re正则表达式操作
difflib差异计算工具
textwrap文本填充
unicodedataUnicode字符数据库
stringprep互联网字符串准备工作
readlineGNU按行读取接口
rlcompleterGNU按行读取的实现函数
二进制数据struct将字节解析为打包的二进制数据
codecs注册表与基类的编解码器
数据类型datetime基于日期和时间工具
calendar通用月份函数
collections容器数据类型
collections.abc容器虚基类
heapq堆队列算法
bisect数组二分算法
array高效数值数组
weakref弱引用
types内置类型的动态创建与命名
copy浅拷贝与深拷贝
pprint格式化输出
reprlib交替repr()的实现
数学numbers数值的虚基类
math数学函数
cmath复数的数学函数
decimal定点数与浮点数计算
fractions有理数
random生成伪随机数
函数式编程itertools为高效循环生成迭代器
functools可调用对象上的高阶函数与操作
operator针对函数的标准操作
文件与目录os.path通用路径名控制
fileinput从多输入流中遍历行
stat解释stat()的结果
filecmp文件与目录的比较函数
tempfile生成临时文件与目录
globUnix风格路径名格式的扩展
fnmatchUnix风格路径名格式的比对
linecache文本行的随机存储
shutil高级文件操作
macpathMac OS 9路径控制函数
持久化picklePython对象序列化
copyreg注册机对pickle的支持函数
shelvePython对象持久化
marshal内部Python对象序列化
dbmUnix“数据库”接口
sqlite3针对SQLite数据库的API2.0
压缩zlib兼容gzip的压缩
gzip对gzip文件的支持
bz2对bzip2压缩的支持
lzma使用LZMA算法的压缩
zipfile操作ZIP存档
tarfile读写tar存档文件
文件格式化csv读写csv文件
configparser配置文件解析器
netrcnetrc文件处理器
xdrlibXDR数据编码和解码
plistlib生成和解析Mac OS X.plist文件
加密hashlib安全散列与消息摘要
hmac针对消息认证的键散列
操作系统工具os多方面的操作系统接口
io流核心工具
time时间的查询与转化
argparser命令行选项、参数和子命令的解析器
optparser命令行选项解析器
getoptC风格的命令行选项解析器
loggingPython日志工具
logging.config日志配置
logging.handlers日志处理器
getpass简易密码输入
curses字符显示的终端处理
curses.textpadcurses程序的文本输入域
curses.ascllASCII字符集工具
curses.panelcurses的控件栈扩展
platform访问底层平台认证数据
errno标准错误记号
ctypesPython外部函数库
并发threading基于线程的并行
multiprocessing基于进程的并行
concurrent并发包
concurrent.futures启动并行任务
subprocess子进程管理
sched事件调度
queue同步队列
select等待I/O完成
dummy_threadingthreading模块的替代(当_thread不可用时)
_thread底层的线程API(threading基于其上)
_dummy_thread_thread模块的替代(当_thread不可用时)
进程间通信socket底层网络接口
sslsocket对象的TLS/SSL填充器
asyncore异步套接字处理器
asynchat异步套接字命令/响应处理器
signal异步事务信号处理器
mmap内存映射文件支持
互联网email邮件与MIME处理包
jsonJSON编码与解码
mailcapmailcap文件处理
mailbox多种格式控制邮箱
mimetypes文件名与MIME类型映射
base64RFC3548:Base16、Base32、Base64编码
binhexbinhex4文件编码与解码
binascii二进制码与ASCII码间的转化
quopriMIME quoted-printable数据的编码与解码
uuuuencode文件的编码与解码
HTML与XMLhtmlHTML支持
html.parser简单HTML与XHTML解析器
html.entitiesHTML通用实体的定义
xmlXML处理模块
xml.etree.ElementTree树形XML元素API
xml.domXML DOM API
xml.dom.minidomXML DOM最小生成树
xml.dom.pulldom构建部分DOM树的支持
xml.saxSAX2解析的支持
xml.sax.handlerSAX处理器基类
xml.sax.saxutilsSAX工具
xml.sax.xmlreaderSAX解析器接口
xml.parsers.expat运用Expat快速解析XML
互联网协议与支持webbrowser简易web浏览器控制器
cgiCGI支持
cgitbCGI脚本反向追踪管理器
wsgirefwsgi工具与引用实现
urllibURL处理模块
urllib.request打开URL连接的扩展库
urllib.responseurllib模块的响应类
urllib.parse将URL解析成组件
urllib.errorurllib.request引发的异常类
urllib.roborparserrobots.txt的解析器
httphttp模块
http.clienthttp协议客户端
ftplibftp协议客户端
poplibpop协议客户端
imaplibimap4协议客户端
nntplibNNTP协议客户端
smtplibSMTP协议客户端
smtpdSMTP服务器
telnetlibtelnet客户端
uuidRFC4122的UUID对象
socketserver网络服务器框架
http.serverhttp服务器
http.cookieshttp cookie状态管理器
http.cookiejarhttp客户端的cookie处理
xmlrpcXML-RPC服务器和客户端模块
xmlrpc.clientXML-RPC客户端访问
xmlrpc.serverXML-RPC服务器基础
ipaddressIPv4/IPv6控制库
多媒体audioop处理原始音频数据
aifc读写AIFF和AIFC文件
sunau读写sun AU文件
wave读写wav文件
chunk读取IFF大文件
colorsys颜色系统间转化
imghdr指定图像类型
sndhdr指定声音文件类型
ossaudiodev访问兼容OSS的音频设备
国际化gettext多语言的国际化服务
locale国际化服务
编程框架turtleturtle图形库
cmd基于行的命令解释器支持
shlex简单词典分析
Tk图形用户接口tkinterTcl/Tk接口
tkinter.ttkTk主题控件
tkinter.tixTk扩展控件
tkinter.scrolledtext滚轴文本控件
开发工具pydoc文档生成器和在线帮助系统
doctest交互式Python示例
unittest单元测试框架
unittest.mock模拟对象库
testPython回归测试包
test.supportPython测试工具套件
venv虚拟环境搭建
调试bdb调试框架
faulthandlerPython反向追踪器
pdbPython调试器
timeit小段代码执行时间测算
tracePython执行状态追踪
运行时sys系统相关的参数与函数
sysconfig访问Python配置信息
builtins内置对象
__main__顶层脚本环境
warnings警告控制
contextlibwith状态的上下文工具
abc虚基类
atexit出口处理器
traceback打印或读取一条栈的反向追踪
__future__未来状态定义
gc垃圾回收接口
inspect检查存活的对象
site址相关的配置钩子(hook)
fpectl浮点数异常控制
distutils生成和安装Python模块
 code基类解释器
 codeop编译Python代码
导入模块imp访问import模块的内部
zipimport从zip归档中导入模块
pkgutil包扩展工具
modulefinder通过脚本查找模块
runpy定位并执行Python模块
importlibimport的一种实施
Python语言parser访问Python解析树
ast抽象语法树
symtable访问编译器符号表
symbolPython解析树中的常量
tokenPython解析树中的常量
keywordPython关键字测试
tokenizePython源文件分词
tabnany模糊缩进检测
pyclbrPython类浏览支持
py_compile编译Python源文件
compileall按字节编译Python库
disPython字节码的反汇编器
pickletools序列化开发工具

 

1.5第三方模块

Python除了自带的标准库之外,还有很多第三方库供编程者使用。随着Python的发展,一些稳定的第三方库被加入到标准库里。常用的第三方模块如下:

Python中常用的第三方模块
分类库名称用途
科学计算matplotlibPython实现的类matlab库,用户绘制数学方面的二维图形
SciPy基于Python的matlab,用于矩阵、线性代数、拟合与优化、插值、数值积分、稀疏矩阵、图像处理等
NumPy数学计算基础库:N维数组、线性代数计算、傅里叶变换等
SymPy符号计算
OpenCV计算机视觉库
Pandas数据分析库:数据导入、整理、处理、分析等
TVTK数据的三维可视化
web框架Django开源web开发框架,鼓励快速开发,并遵循MVC设计
ActiveGrid企业级的web2.0解决方案
Karrigell简单的web框架,自身包含了web服务,py脚本引擎和纯Python的数据库PyDBLite
webpy一个小巧灵活的web框架,简单但是功能强大
CherryPy基于Python的web应用程序开发框架
Pylons基于Python的高效和可靠的web开发框架
Zope开源的web应用服务器
TurboGears基于Python的MVC风格的web应用程序框架
Twisted流行的网络编程库,大型web框架
GUIPyGtk基于Python的GUI程序开发GTK+库
PyQt基于Python的Qt开发库
WxPythonPython下的GUI编程框架,与MFC的架构相似
PyGUIMVC框架,将Python应用与平台底层的GUI代码隔离
Kivy基于OPenGL ES 2,支持多平台,适合游戏开发
其他BeautifulSoup基于Python的HTML/XML解析器,简单易用
PIL基于Python的图像处理库,对图形文件的格式支持广泛
MySQLdb用于连接MySQL数据库
PyGame基于Python的多媒体开发和游戏软件开发模块
Py2exe将Python脚本转换为windows上可以独立运行的可执行程序

要使用Python第三方库,必须安装后才能使用。常用的安装方法如下:

1.源码安装

可以在github或者pypi上查找源码文件,一般是zip,tar.zip,tar.bz2格式的压缩包。把这些压缩包解压后,进入文件夹,其中有一个setup.py的文件。在命令行方式下输入命令:python setup.py install即可。

2.包管理器pip安装

使用Python的包管理器pip可以很方便地安装第三方模块。推荐使用这种方式来安装。

使用pip安装模块,会搜索源文件,并自动下载安装。另外也可以下载到本地安装。在命令行方式下输入命令:pip install模块名即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值