【Python学习】2022-1-21 - Python基础---模块、包、sys.path和模块搜素路径、模块的发布和安装

本文介绍了Python中的模块导入,包括`import`、`from...import`和`import()`,详细讲解了包的概念,以及如何使用`__init__.py`。此外,还阐述了`sys.path`模块搜索路径的工作原理,并指导了模块的本地发布和安装,包括在PyPI上的注册和发布流程。
摘要由CSDN通过智能技术生成

模块的导入
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。方式如下:

  1. import a.aa.module_AA
    在使用时,必须加完整名称来引用,比如:a.aa.module_AA.fun_AA()
  2. from a.aa import module_AA
    在使用时,直接可以使用模块名。 比如:module_AA.fun_AA()
  3. 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为模块文件创建如下结构的文件夹(一般,文件夹的名字和模块的名字一样):请添加图片描述

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 包名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值