模块的导入
1.import语句导入
import语句的基本语法格式如下:
import 模块名 #导入一个模块
import 模块1,模块2… #导入多个模块
import 模块名 as 模块名 #导入模块并使用新名字
import加载的模块分为四个通用类别:
a.使用python编写的代码(.py文件);
b.已被编译为共享库或DLL的C或C++扩展;
c.包好一组模块的包
d.使用C编写并连接到python解释器的内置模块;
2.from… import… #导入的是模块下面的函数
3.import()动态导入
import语句本质上就是调用内置函数_import_(),我们可以通过它实现动态导入。给_import_()动态传递不同的参数值,就能导入不同的模块
s = "math"
m = __import__(s)
m.pi
注意:一般不建议我们自行使用__import__()导入,其行为在python2和python3中有差异,会导致意外错误。如果需要动态导入可以使用Importlib模块。
import importlib
import os
a = importlib.import_module("math")
print(a.pi)
#如果确实需要重新加载使用,可以使用importlib
importlib.reload(os)
包
如果需要导入a/aa/module_AA.py。方式如下:
- import a.aa.module_AA
在使用时,必须加完整名称来引用,比如:a.aa.module_AA.fun_AA() - from a.aa import module_AA
在使用时,直接可以使用模块名。 比如:module_AA.fun_AA() - from a.aa.module_AA import fun_AA 直接导入函数
在使用时,直接可以使用函数名 比如:fun_AA()
注:
1.from package import item 这种语法中,item可以是包、模块,也可以是函数、类、变量
2.import item1.item2 这种语法中,item必须是包或模块,不能是其他。
导入包的本质其实是”导入了包的__init__.py“文件。也就是说,"import pack1"意味着执行了包pack1下面的__init__.py文件。这样,可以在__init__.py中批量导入我们需要的模块,而不再需要一个个导入。
init.py的三个核心作用:
1.作用包的标识,不能删除。
2.用来实现模糊导入
3.导入包实质是执行__init__.py文件,可以在__init__.py文件中做这个包的初始化、以及需要统一执行代码。
用*导入包
import * 这样的语句理论上是希望文件系统找出包中所有的子模块,然后倒入他们。这可能会花长时间等。Python 解决方案是提供一个明确的包索引。
这个索引由 init.py定义__all__变量,该变量为一列表,如上例a包下跌的__init__.py中,可定义 all = [“module_A”,“module_A2”]
这意味着,from sound.effects import * 会从对应的包中导入以上两个子模块;
【注】尽管提供 import * 的方法,仍不建议在生产代码中使用这种写法
…表示父级目录
from … import *
.表示同级目录
from . import *
sys.path和模块搜索路径
Python解释器一般按照如下路径寻找模块文件:
1.内置模块
2.当前目录
3.程序的主目录
4.pythonpath 目录(如果已经设置了)
5.标准链接库目录
6.第三方库目录(site-packages 目录)
7. .pth文件的内容(如果存在的话)
8. sys.path.append()临时添加的目录
当任何一个python程序启动时,就将上面这些搜索路径(除内置模块以外的路径)进行收集,放到sys模块的path属性中(sys.path)
模块发布和安装
- 模块的本地发布
1.1为模块文件创建如下结构的文件夹(一般,文件夹的名字和模块的名字一样):
1.2在文件夹中创建一个名为【setup.py】的文件,内容如下:
from distutils.core import setup
setup(
name="" #对外我们模块的名字
version="1.0" #版本号
description=""#描述
author=""#作者
author_email=""
py_modules=["",""] #要发布的模块
)
1.3构建一个发布文件。通过终端,cd到模块文件夹c下面,再键入命令:
python setup.py. sdist
本地安装模块
将发布安装到你的本地计算机上。仍在cmd命令行模式下操作,进setup.py所在目录,键入命令:
python setup.py install
安装成功后,我们进入python目录/Lib/site-packages目录(第三方模块都安装在这里,python解释器执行时也会搜索这个路径)
Pypi
1.创建用户信息文件.pypirc
方式1:使用命令(适用Linux)
输入并执行后 python setup.py register,然后输入用户名和密码
方式2:使用文件(适用于windows,linux)
在用户的家目录里创建一个文件名为.pypirc,内容为:
[distutils]
index-servers=pypi
[pypi]
repository = https://upload.pypi.org/legacy/
username = 账户名
password = 你自己的密码
注:
Linux的家目录: ~/.pypirc
Windows的家目录是: c:/user/用户名
在windows下直接创建不包含文件名的文件会失败,因此创建时文件名为".pypirc.",前后都有两个点即可
2.上传并远程发布
进入setup.py文件所在目录,使用命令"python setup.py sdist upload",即可以将模块代码上传并发布
3.发布后安装
pip install 包名