模块是Python中组织代码的基本方式
Python的脚本都是用扩展名为py的文本文件保存的,一个脚本可以单独运行,也可以导入另一个脚本中运行,当脚本被导入运行时,我们将其称为模块(module),另外.pyc和.pyo文件也可以当作模块,当调用模块时,如果该模块文件是.py,那么会自动在该模块所在目录生成一个名字相同的.pyc编译文件,加快以后的调用执行的速度。
dir(模块名):可以获取模块的所有包含的类、方法或属性
属性"__all__"(并非所有模块都有这个属性)表示模块编写者想要外部直接使用的类、方法或属性,使用from 模块名 import *的方式导入只能导入该属性指定的所有对象,该属性没有指定的对象不会被导入
属性"__file__"表示该模块的代码文件所在的位置
属性"__cached__"表示该模块的编译文件所在的位置
Python中的模块可以按照目录组织为包(package),创建一个包的步骤是:
1、建立一个名字为包名字的文件夹
2、在该文件夹中创建一个__init__.py文件(存放包的信息,可以为空)
3、根据需要在该文件夹下存放脚本文件
4、导入模块时使用包名.模块名的方法,使用模块中的函数时包名.模块名.函数名()
模块的导入:
1、import 模块名 / import 模块名 as 变量名(将导入的模块对象赋值给一个变量,可以理解成模块别名)
在后面调用模块中的函数时使用模块名.函数名()或者模块别名.函数名()的方式调用。
模块名与脚本的文件名相同(不包含.py),可以在模块内部使用全局变量,而无需担心它将来与某个用户的全局变量在导入模块时意外冲突。
出于性能考虑,每个模块在每个解释器会话中只导入一遍。因此,如果修改了模块,需要重启解释器;
也可以用importlib模块中的函数reload(module)重新加载模块(python3中取消了reload()内置函数,整合到了importlib模块中)。reload会重新加载已加载的模块,但原来已经使用的实例还是会使用旧的模块,而新生产的实例会使用新的模块,reload后还是用原来的内存地址。reload不支持 from ××× import ××× 格式的模块进行重新加载。
2、from 模块名(包名) import 函数1(模块1)[,函数2(模块2),...] :从包导入模块或从模块导入某个或某些对象。
如导入某个模块的某个函数,直接调用函数名()即可,不需要模块名.函数()这种方式
如导入摸个包的某个模块,直接模块名.函数名()调用即可,前面不需包名.模块名.函数()的方式调用。
可以导入一个模块或包中的所有对象或模块:from 模块名(包名) import *
3、__import__(module) 函数用于动态加载类和函数 。如果一个模块经常变化就可以使用 __import__() 来动态载入。
PS:如果模块脚本中本身有输出或者某些操作,我们调用的时候使用Python内置属性__name__来判断当前的是否是脚本本身的运行(此时__name__的值为__main__)或者是在被作为模块调用时的运行(此时__name__的值为作为本调用的模块名,也就是文件名。
调用模块时的搜索路径:
总的来说会按照sys模块的sys.path属性中给出的目录逐个查找,sys.path给出的目录可以按照查找顺序分为5个部分:
1、程序的根目录:这个根目录依赖于你怎么运行代码,当运行一个程序时是程序运行入口文件所在目录;当用交互式窗口运行代码时就是你所在的工作目录。
2、PYTHONPATH环境变量设置的目录,因为这个搜索在标准库之前,所以要小心不要覆盖一些标准库的同名模块。
3、标准库的目录
4、.pth文件列出的目录 :它允许用户以每行一个的方式列出搜索路径,它和PYTHONPATH环境变量的不同是会在标准库路径之后搜索;而且它是针对这个python安装的,而不是针对用户的(环境变量会随着用户的不同而不同)。 那么,.pth文件应该放在哪里呢?可以通过site.getsitepackages()(要先导入site模块)找到.pth文件可以放置的位置
5、第三方扩展的site-package目录,Lib/site-package目录,这一般是第三方扩展安装的地方,一般是由distutils工具发布的。
在线安装python模块
pip是Python包管理工具,提供了对Python包的查找、下载、安装、卸载的功能。Python3.4以上版本都自带pip。
pip 官网:https://pypi.org/project/pip/
显示版本和路径:pip --version
获取帮助:pip --help
升级pip:pip install -U pip
安装包:
pip install SomePackage # 最新版本 pip install SomePackage==1.0.4 # 指定版本 pip install 'SomePackage>=1.0.4' # 最小版本
升级包:pip install --upgrade SomePackage
升级指定的包,通过使用==, >=, <=, >, < 来指定一个版本号。
卸载包:pip uninstall SomePackage
搜索包:pip search SomePackage
显示安装包信息:pip show
查看包的详细信息:pip show -f SomePackage
列出已安装的包:pip list
查看可升级的包:pip list -o
如果Python2和Python3同时有pip,使用如下方法:
python2 -m pip install SomePackage
python3 -m pip install SomePackage
pip更换源
pip默认的安装源已经被墙了,安装经常失败,所以我们换成国内的一些优质的安装源
常用的国内比较靠谱的源:
阿里云:http://mirrors.aliyun.com/pypi/simple/ 豆瓣:http://pypi.douban.com/simple/ 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/simple/ 华中科技大学:http://pypi.hustunique.com/simple/ 山东大学:http://pypi.sdutlinux.org/simple/
临时更换源:使用-i参数指定源
pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple
永久修改方法:使用配置文件
Linux/Mac系统:~/.pip/pip.conf windows系统:C:\Users\XX\pip\pip.ini win+R输入%HOMEPATH%回车,创建pip文件夹,在pip目录下创建pip.ini文件 目录或文件不存在就创建一个 编辑配置文件内容: [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple timeout = 6000 保存就完成了pip的永久更换源
- 本文固定链接: https://www.qingheluo.com/pythonzhongdemokuai/
- 转载请注明: qingheluo 于 清河洛 发表