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

news2024/12/23 6:25:04

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                                                     即可自动安装自己虚拟环境中已安装的包

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1326291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

16 Vue3中使用v-model绑定多选框

概述 使用v-model绑定多选框也是一种比较常见的需求,比如一个用户可以绑定多个角色,可以有多个兴趣爱好。 在本节课中,我们来学习一下这两种用法。 基本用法 我们创建src/components/Demo16.vue,在这个组件中,我们…

探索中文电码:起源、标准与实践

一、引言 中文电码是一种将中文文字转换为计算机可识别和处理的二进制编码。随着信息技术的发展,中文电码在各个领域得到了广泛的应用,如计算机编程、通信、文字处理等。本文将从起源、标准和发展三个方面深入探讨中文电码,以期帮助读者更好…

华为云Astro Zero零代码构建HDC展点打卡应用——实验指导

Astro轻应用(即Astro Zero)是华为云统一低代码平台Astro的子服务之一,让开发者通过简单的拖拽配置完成应用搭建。平台提供丰富的轻应用模板,包括办公管理、人事管理、项目管理、运营推广、培训赋能等领域,开发者可基于…

链接未来:深入理解链表数据结构(一.c语言实现无头单向非循环链表)

在上一篇文章中,我们探索了顺序表这一基础的数据结构,它提供了一种有序存储数据的方法,使得数据的访 问和操作变得更加高效。想要进一步了解,大家可以移步于上一篇文章:探索顺序表:数据结构中的秩序之美 今…

Spring Cloud Alibaba核心技术宝典,分布式系统中间件实战案例(百度云下载)

前言 《Spring Cloud Alibaba学习笔记》其实是阿里的微服务解决方案,是阿里巴巴结合自身微服务实践,开源的微服务全家桶,在Spring Cloud项目中孵化成为Spring Cloud的子项目。第一代的Spring Cloud标准中很多组件已经停更,如:Eureak,zuul等。…

系列十二(面试)、Java中的GC回收类型有哪些?

一、Java中的GC回收类型 1.1、概述 Java中的GC回收类型主要包含以下几种,即:UseSerialGC、UseParallelGC、UseConcMarkSweepGC、UseParNewGC、UseParallelOldGC、UseG1GC。 1.2、源码

VMware Ubuntu虚拟机忘记密码

​​原文 https://blog.csdn.net/ezconn/article/details/89328024​​​​​​​ 前言: 在VMware运行Ubuntu虚拟机时,开机之后忘记密码怎么办? 环境:Ubuntu版本:ubuntu-16.04.6-server-amd64;VMware版本…

系列十一(面试)、如何查看JVM的参数?

一、查看JVM的参数 1.1、概述 上篇文章介绍了JVM的参数类型,通过jinfo可以查看JVM的默认参数,本章介绍另外一种查看JVM参数的方式。 1.2、 分类 JVM中提供了三种方式查看JVM的参数信息,这三种方式又分为两类,即:查看默…

互联网中的商品超卖问题及其解决方案:Java中Redis结合UUID的应用

前言 在设计商品下单和库存扣减,你一定遇到过这样的问题,库存扣减为0了,可是消费者还能下单,并将订单信息保存到了数据库里,针对商品超卖问题,作此篇以解决。 随着互联网商业的飞速发展,商品超…

Linux宝塔面板本地部署Discuz论坛发布到公网访问【无需公网IP】

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board(以下简称 Discuz!)是一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上&a…

数据结构与算法之美学习笔记:38 | 分治算法:谈一谈大规模计算框架MapReduce中的分治思想

目录 前言如何理解分治算法?分治算法应用举例分析分治思想在海量数据处理中的应用解答开篇内容小结 前言 本节课程思维导图: MapReduce 是 Google 大数据处理的三驾马车之一,另外两个是 GFS(hdfs) 和 Bigtable(hbase)…

cisp和cissp区别,考证必学资料

CISP(Certified Information Security Professional,认证信息安全专家)和CISSP(Certified Information Systems Security Professional,认证信息系统安全专业人员)都是信息安全领域的重要认证,但…

Gradle中 Implementation 与API 声明依赖方式的对比

在Gradle中,implementation和api是声明依赖的两种方式,它们在如何暴露依赖关系方面有所不同: Implementation: 当一个模块使用implementation声明依赖时,该依赖仅对声明它的模块可见。这意味着该依赖对于该模块的消费者是隐藏的。…

第三方登录-pc支付宝扫码登录流程

最近有个奇葩的需求,用户要支持支付宝扫码登录。这个需求很少见,那就做一下,看起来有点难,其实很简单。 先看结果 流程梳理 核心代码 获取支付宝扫码页面的url // 获取支付宝扫码登录页面的urlasync function getZFBLoginUrl()…

MySQL概括与SQL分类

文章目录 一、计算机语言二、SQL语言三、数据库系统四、MySQL简介 一、计算机语言 二、SQL语言 三、数据库系统 四、MySQL简介

如何通过宝塔面板搭建一个MySQL数据库服务并实现无公网ip远程访问?

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板cp…

flink sql1.18.0连接SASL_PLAINTEXT认证的kafka3.3.1

阅读此文默认读者对docker、docker-compose有一定了解。 环境 docker-compose运行了一个jobmanager、一个taskmanager和一个sql-client。 如下: version: "2.2" services:jobmanager:image: flink:1.18.0-scala_2.12container_name: jobmanagerports:…

Kafka 如何保证高可用?

Kafka 的基本架构组成是:由多个 broker 组成一个集群,每个 broker 是一个节点;当创建一个 topic 时,这个 topic 会被划分为多个 partition,每个 partition 可以存在于不同的 broker 上,每个 partition 只存…

【新姿势】SpringBoot下时间配置新方式(同文件大小)

SpringBoot Duration 背景: 在SpringBoot项目中,我们经常需要配置时间参数,作为某一动作的间隔。以往我们通常是在配置文件中定义字段后,直接设置对应的秒或毫秒值,遇到计算时,直接在此基础上做运算。这种…

标准解析|海格里斯HEGERLS四向车调度算法如何解决同层多车车辆路径规划和避让问题?

随着当前各大企业对仓储存储需求的不断攀升,仓储货架业已进入智能自动化系统集成时代,从单一的货架存储已慢慢发展为货架穿梭车提升机拣选系统控制软件仓库管理软件等集成的仓储解决方案,如四向穿梭车系统,多层穿梭车系统&#xf…