python学习笔记——导入模块的本质和自定义模块

一、安装第三方库的四种方式

总结写在前: 想要导入一个包,要么把包放在sys.path里的元素文件夹下,要么在sys.path的列表里添加包所在的路径。文件夹必须含有__init__.py这个文件才能被识别出是包。
添加链接描述
添加链接描述
全自动安装(在线安装): easy_install lib_name 或者 pip install lib_name / pip3 install libname或者conda
直接在pypi官网上找库下载下来并安装。
在这里插入图片描述
可以发现先在官网下载了whl文件以及依赖包然后再安装。
离线安装: 假设你已经下载好了xxx.whl到本地D盘根目录,我们先命令行切换到D盘根目录,然后使用pip install xxx.whl进行安装即可
半自动安装:先从 https://pypi.python.org/pypi/lib_name/ 下载python包(分为源码和二进制码)。
源码包是.zip或.tar等结尾的压缩包,先解压后再编译再运行 python setup.py install进行安装。
二进制包是.egg或者,whl结尾的,安装过程省去了编译的过程,直接进行解压安装
手动安装:将 lib_name 目录放置于当前目录或者 site-packages 目录
通过 import lib_name 来引用
添加链接描述
添加链接描述

通过setup.py安装流程:

python setup.py build

在这里插入图片描述
build的结果是生成build文件夹,将库的所有包复制到lib文件夹下
在这里插入图片描述在这里插入图片描述

python setup.py install

python setup.py install 是我们用来安装下载的python包或者自己按照python官方规范开发的扩展包的常用指令。通过这个命令,这个python包就会被安装系统或者你指定用户的python库里。python setup.py install包括两步:python setup.py build, python setup.py install。
在这里插入图片描述
在这里插入图片描述
生成dist文件夹和bdist.win-amd64和存有信息的文件。
在这里插入图片描述同时将生成包放入环境文件夹下在这里插入图片描述
添加链接描述
此时就可以import包使用。实验发现库名取决于setup.py里的name,但是导入时还是可以直接导入库的相应包。
python setup.py install 将模块安装到全局环境中

python setup.py develop 创建一个软链接指向实际所在目录,不会真正安装
在这里插入图片描述

二、import的本质

1.定义:
模块(module):用来从逻辑(实现一个功能)上组织Python代码(变量、函数、类),本质就是*.py文件。文件是物理上组织方式"module_name.py",模块是逻辑上组织方式"module_name"。

(package):定义了一个由模块和子包组成的Python应用程序执行环境,本质就是一个有层次的文件目录结构(必须带有一个__init__.py文件,否则python会认为是一个普通文件夹)。

2.导入模块

在导入模块的时候,模块所在文件夹会自动生成一个__pycache__\module_name.cpython-35.pyc文件。
“import module_name” 的本质是将"module_name.py"中的全部代码加载到内存并赋值给与模块同名的变量写在当前文件中,这个变量的类型是’module’;<module ‘module_name’ from ‘E:\PythonImport\module_name.py’>
所以,模块中有if name=="main"这个函数入口。

3.导入包
“import package_name"导入包的本质就是执行该包下的__init__.py文件,在执行文件后,会在"package_name"目录下生成一个"pycache / init.cpython-35.pyc” 文件。所以导入包的时候实质导入的是__init__.py文件

模块分为内建模块、自定义模块、第三方模块。
函数分为内建函数、非内建函数。

非内建函数需要使用"import"导入。Python中的模块文件在"安装路径\Python\Python35\Lib"目录下。

第三方模块
通过"pip install "命令安装的模块,以及自己在网站上下载的模块。一般第三方模块在"安装路径\Python\Python35\Lib\site-packages"目录下。
添加链接描述

三、import的工作过程

1、首先,Python会按照import xxx中指定的包名,到sys.modules中查找当前环境中是否已经存在相应的包。
2、如果找不到就会去sys.path这个列表里按列表元素顺序(元素是路径)查找。
添加链接描述
四、init.py和setup.py文件作用
init.py是包必须有的,导入模块时本质导入__init_.py文件
setup.py是构建模块文件,运行此文件来构建模块
setup.py是构建模块。
NAME是模块名
VERSION是版本号
PACKAGES是包含模块
description是创作原因
long_description是长的创作原因
long_description_content_type是long_description的格式
添加链接描述

pycache是什么文件目录

pycache目录下是所有模块对应的字节码.pyc文件。

添加链接描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值