文章目录
用*导入包
import *这样的语句理论上是希望文件系统找出包中所有的子模块,然后导入它们。这可能会花长时间等。Python解决方案是提供一个明确的包索引。
这个索引由__init__.py定义__all__变量,该变量为一列表,如上例b包下的__init__.py中,可定义__all__=[“module_B1”,“module_B2”]
这意味着,from sound.effects import * 会从对应的包中导入以上两个子模块。
from b import *
module_B1.fun_B()#可直接使用b包中的导入了的模块
注:尽管提供import*的方法,仍不建议在生产代码中使用这种写法。
包内引用
如果是子包内的引用,可以按相对位置引入子模块以cc包下的module_C1中导入b包下内容为例:
from ..a.aa import * #..表示上级目录
from . import module module_C1 #.表示同级目录
sys.path和模块搜索路径
当我们导入某个模块文件时,Python解释器去哪里找这个文件呢?
只有找到这个文件才能读取,装载运行该模块文件。它一般按照如下路径寻找模块文件(按照顺序寻找,找到即停,不继续往下寻找):
1.内置模块
2.当前目录
3.程序的主目录
4.pythonpath目录(如果已经设置了)
5.标准链接库目录
6.第三方库目录(site-packages目录)
7…pth文件的内容(如果存在的话)
8.sys.path.append()临时添加的目录
当任何一个python程序启动时,就将上面这些搜索路径(除内置模块以外的路径)进行收集,放到sys模块的path属性中(sys.path)。
'''测试sys.path的用法,测试模块搜索路径'''
import sys
sys.path.append("d:/")#临时有效,仅这个程序
print(sys.path)
模块发布和安装
模块的本地发布
当我们完成了某个模块开发后,可以将他对外发布,其他开发者也可以以“第三方扩展库”的方式使用我们的模块。我们按照如下步骤即可实现模块的发布:
1.为模块文件创建如下结构的文件夹(一般,文件夹的名字和模块的名字一样):
2.在文件夹中创建一个名为setup.py的文件,内容如下:
from distutils.core import setup
setup(
name='Math3',#对外我们模块的名字
version='1.0',#版本号
description='这是第一个对外发布的模块,测试哦',#描述
author='meidi',#作者
author_email='22222222@163.com',
py_modules=['math3.demo1','math3.demo2']
)
本地安装模块
将发布安装到你的本地计算机上,仍在cmd命令行模式下操作,进setup.py所在目录,键入命令:
python setup.py install
安装成功后,我们进入python目录/Lib/site-packages目录(第三方模块都安装的这里.python解释器执行时也会搜索这个路径)。
之后就可以通过import命令调用包啦!
上传模块到PyPI
将自己开发好的模块上传到PyPI网站上,将成为公开的资源,可以让全球用户自由使用。按照如下步骤,很容易就实现上传模块操作。
PyPI官网_远程上传和管理模块_PIP方式安装模块
注册PyPI网站
创建用户信息文件.pypirc
方式1:使用命令(适用Linux)
输入并执行后python setup.py register,然后输入用户和密码,即可。
方式2:使用文件(适用windows,Linux)
在用户的家目录里创建一个文件名为.pypirc,内容为:
[distutils]
index-servers=pypi
[pypi]
repository=http://upload.pypi.org/legacy/
username=账户名
password=你自己的密码
注:
Linux的家目录:~/.pypirc
Windows的家目录是:c:/user/用户名
在windows下直接创建不包含文件名的文件会失败,因此创建时文件名为".pypirc.",前后都有两个点即可。
上传并远程发布
进入setup.py文件所在目录,使用命令“python setup.py sdist upload”,即可以将模块代码上传并发布。
让别人使用你的模块
pip install [模块名字]
升级:
pip install [模块名字] upload
安装后,import语句正常用