python核心阶段(七)—— 包&模块以及虚拟环境

发布时间:2023年12月21日

1.包&模块 概念解释

模块:为了使代码容易维护,可以将一组功能相关的代码写入一个单独的.py文件中,这个.py文件? ? ? ? ? ? ?就被称作一个模块

包:? ??包是指一个有层次的文件目录结构,它包含多个相关模块或子包;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?它和目录的区别是会自动包含一个__init__.py的文件

库:? ? 完成一定功能代码的集合,具体表现可以是一个模块,也可以是一个包?

框架: 它是一个架构层面的概念,在实际中,通过一个框架,我们可以实现解决问题的? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 基本骨架,然后再对细节进行修改填充即可

  • 作用:1)作为工具代码,供其他模块使用

? ? ? ? ? ? ? ? ? 2)对代码进行分解、封装,便于维护

? ? ? ? ? ? ? ? ? 3)防止同一模块内重复命名问题

2.分类

类别使用作用
标准包/模块

自动安装,手动import导入

特例:内建包/模块(直接使用)

满足基本功能需求
三方包/模块手动下载安装满足比较复杂的功能
自定义包/模块自己定义

3.一般操作

?3.1 包/模块的创建及基本信息

创建查看基本信息
模块

直接创建.py文件

模块名称:去除.py后缀后的文件名
包名称:文件夹名

存放位置:import os? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print(os.__file__)

查看具体内容:dir(包/模块名称)

创建一个文件夹

在文件夹中创建一个__init__.py文件

作用:创建时自动执行文件中的代码

?3.2 包/模块的导入

? ? 3.2.1? 常规导入(import)

? ? ? 语法:? import 模块名? 或? ?import 包名.模块名? ? ? (可同时导入多个模块,用逗号隔开即可)

? ? ? ? ? ? ? ? ? ?我们也可以通过as语句(import 模块名 as 别名)给模块起一个别名,可以简化名称

? ? ? 补充:1)调用时,需要指明包/模块的名称? 模块名.xxx

? ? ? ? ? ? ? ? ?2) 如果我们用import导入一个包,默认不会导入任何模块,我们可以通过设置__init__? ? ? ? ? ? ? ? ? ? ? ? ? 文件自动导入需要的模块

? ? 3.2.2? from语句导入?

? ? ? ?语法:from A import B [as C]

? ? ? ?适用:只希望导入一个模块或者包的某一部分;或者从某个位置导入某些资源到当前位置

? ? ? ?补充:1)A的范围必须大于B(B必须包含在A中)? ? ? ? ? ?包? >? 模块? >? 模块中的资源

? ? ? ? ? ? ? ? ? 2)必须要保证B部分的路径最简(面向关系原则:A必须可以“看到”B)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 例如:包中只能看到模块,看不到具体资源,所以应该写? from?包.模块 import?资源

? ? 3.3.3? 导入模块时的底层逻辑

? ? ? 1. 在被导入的包对应的命名空间(内存区域)中,执行被导入的包 / 模块中的所有代码

? ? ? 2. 创建一个模块对象,并将模块内所有顶层变量(非局部变量)以属性形式绑定在模块对象上

? ? ? ? ?(这就是为什么调用这个模块中的资源需要用? ?模块名.函数名? ?因为它被包含在了对象中)?

? ? ? 3. 在import的位置,引入import后面的变量名称到当前的命名空间?? ? ?

? ? ?注:在第二次导入这个模块时,会直接执行第三步?

导入模块时的底层逻辑

4.虚拟环境

?4.1 概念及适用场景

? ?虚拟环境主要是指一个完全独立的局部python环境,它能完全模拟系统全局python环境的使用。? ? ? ? ? ? ? ? ? ?

? ?python环境 一般包含:python解释器、包管理工具等等

python真实环境
python虚拟环境

? ?适用场景:例如,当前有两个项目A、B,两个项目需要依赖同一个库,但是版本不同,而默认? ? ? ? ? ? ? ? ? ? ? ? ?情况下,使用的是全局python环境,即:只能安装一个库版本

?

? ?原理:操作系统的环境变量可以为程序提供信息和做信息交换介质,而其中PATH环境变量主要? ? ? ? ? ? ? ?用于为操作系统和程序提供可执行文件的访问路径,当我们在命令行中执行某个程序时,? ? ? ? ? ? ? ?操作系统就会从 PATH 所提供的路径中逐个查找

? ? ? ? ? ? ? ? ?而虚拟环境正是运用了如此性质。在激活虚拟环境时,激活脚本会将当前命令行程序的? ? ? ? ? ? ? ?PATH 修改为虚拟环境的,这样执行命令就会在被修改的 PATH 中查找,从而避免了原? ? ? ? ? ? ? ? ? ?本 PATH 可以找到的命令,从而实现了 Python 环境的隔离

?

? ?安装:在python2中需要依赖一个三方包,pip install virtualenv? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 而在python3中,直接调用自带的标准库venv即可

?4.2 虚拟环境的使用方法 (cmd)

  • step1? 创建一个局部的隔离的虚拟环境

? ? ? ? 操作:win + R 后输入cmd,打开命令提示符

? ? ? ? ? ? ? ? ? ? 然后输入 python -m venv 虚拟环境文件名

? ? ? ? ? ? ? ? ?(这里 -m mod 是指将库模块作为脚本运行)

? ? ? ? venv中几个可能用得到的参数:

? ? ? ? ? ? ? ? ? ? --without-pip: 不需要安装 pip,默认为安装

? ? ? ? ? ? ? ? ? ? --clear:如果创建虚拟环境的目录已经有了其他虚拟环境,清楚重建

  • step2? 激活虚拟环境

? ? ? ? ? ? ? ?在cmd中输入? ?虚拟环境文件名 \ Scripts \?activate

出现以上括号,说明已经成功激活虚拟环境

????????

  • step3? 使用虚拟环境?

? ? ? ? ? ? ? 当我们激活虚拟环境之后,再进行pip install,就是安装到虚拟环境中了,更易于包的管理

? ? ? ? ? ? ? 若我们希望在pycharm或其他开发工具中使用,只需将解释器换为虚拟环境的解释器即可?

? ? ? ? ? ? ? 一般来说,路径为 C:\ Users \ 电脑名 \ 虚拟环境名 \ Scripts \ python.exe

?

  • step4? 退出虚拟环境?

? ? ? ? ? ? ? 只需要执行?deactivate?命令就行

?

  • ?step5? 删除虚拟环境

? ? ? ? ? ? ? ?找到对应虚拟文件的位置删除即可

?4.3 pycharm中虚拟环境的使用

?若已经在cmd中创建好虚拟环境,直接参考step3 使用即可

?我们也可以直接在pycharm中创建虚拟环境

pycharm中新建虚拟环境

?

?

?4.4 保存和复制虚拟环境?

  • 如何让别人使用和我们一样的虚拟环境?

step1? 激活虚拟环境

step2? 输入???虚拟环境文件名 \ Scripts > pip?freeze? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?作用:将我们安装过的包以requirements的格式输出

step3? 再在后面输入 > requirements.txt? ? ? 以txt文件格式保存,并发送给别人

stpe4? 在其他电脑配置的python环境中,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?输入 python环境文件名 \ Scripts > pip?install? -r??requirements.txt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?即可自动安装自己虚拟环境中已安装的包

?

文章来源:https://blog.csdn.net/m0_61766362/article/details/134958255
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。