当前位置: 首页 > news >正文

python加载模块

对于c/c++开发的同学来说,除了标准库外,依赖额外库相信都知道如何操作,但是那是c/c++情况下的加载依赖库的方法,在python下并不适用,但是他们的思想都是相通的。即

对于额外的第三方库或者自定以的库、模块若要使用,就要通过显式指定或者添加到对应机制的搜索路径下,对于linux下c/c++程序来说,对于LD_LIBRARY_PATH或者ld.so.conf这些都不陌生,本质还是对于额外依赖的库或者自定义库需要显式的告知程序环境,对于c/c++来说是编译、链接、运行环境;对于python来说则不是。虽然他们本质是一样的,但是细节上还是有所区别。

下面将详细的介绍python脚本如何加载别的模块。按照模块种类分别进行介绍。

标准库

若要使用标准库的中模块,直接在脚本中使用import导入即可。标准库中包含很多模块,例如os、sys、re等。示例如下所示:

import os
import re

第三方库下的模块

python开源社区有很多大佬,开发了很多常用的模块,有了这些开发者就不需要进行重复开发,大大提高了开发效率。将更多的精力投入到业务逻辑中。这些第三方库下的模块一般通过pip或者pip3来完成下载,安装到指定目录,这个目录一般在安装目录下的site-packages目录下。

言归正传,如果一个脚本若要使用调用第三方库的脚本,也不需要特殊处理,类似标准库一样,直接import调用即可。

自定义模块

除了上面的两种情况外,还有一种情况是脚本依赖内部独立开发的模块,这种情况下应该如何导入呢?这里分成三种情况来进行介绍:

  • 内部开发的模块与依赖脚本在同级目录,这种情况下无需做任何处理,直接import即可。
  • 内部开发的模块与依赖脚本在同级目录下子目录,这时候需要在子目录中添加__init__.py脚本,声明该目录是一个包,然后直接import接口,示例如下:
import package.module

上文中package是包名,module是模块名称。

  • 若脚本依赖的模块在其它目录,则需要通过sys.path.append方法告将该目录添加到模块搜索路径中。注意这里跟第二种情况一样,也需要对应的目录添加__init__.py脚本,声明该目录是一个包目录。方法二是通过设置环境变量的方式也可以实现该模块的导入,环境变量名称为PYTHONPATH,设置环境变量的方式为永久方式,方法一通过sys.path.append是临时添加的方式,脚本执行完毕后不再生效。

相关文章:

  • 【工具类】开源照片管理工具pthtoprism
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • 【Docker】初学者 Docker 基础操作指南:从拉取镜像到运行、停止、删除容器
  • 【Redis】理论进阶篇------浅谈Redis的缓存穿透和雪崩原理
  • 可变形注意力(Deformable Attention)及其拓展
  • 【Linux进程】冯·诺依曼体系结构以及操作系统的深入理解
  • this的指向问题总结
  • 【深度学习:计算机视觉】计算机视觉的最佳数据集 [行业细分]
  • 常见锁策略,CAS,synchrodized原理讲解
  • 企业微信机器人的运营策略与实践
  • LeetCode 热题 100 | 二叉树(终)
  • 基于springboot+vue的中小型医院网站(前后端分离)
  • 零基础到高级:Android音视频开发技能路径规划
  • 数智赋能,变革加速:人工智能技术与低代码开发利器
  • 利用Ubuntu22.04启动U盘对电脑磁盘进行格式化
  • @jsonView过滤属性
  • [LeetCode] Wiggle Sort
  • 《深入 React 技术栈》
  • 【EOS】Cleos基础
  • 【译】理解JavaScript:new 关键字
  • 77. Combinations
  • Android 控件背景颜色处理
  • CentOS从零开始部署Nodejs项目
  • Debian下无root权限使用Python访问Oracle
  • echarts的各种常用效果展示
  • ERLANG 网工修炼笔记 ---- UDP
  • Hibernate【inverse和cascade属性】知识要点
  • js
  • Linux快速复制或删除大量小文件
  • Spring Cloud Feign的两种使用姿势
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • V4L2视频输入框架概述
  • vue-cli在webpack的配置文件探究
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 关于extract.autodesk.io的一些说明
  • 前端性能优化——回流与重绘
  • 深度学习在携程攻略社区的应用
  • 十年未变!安全,谁之责?(下)
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • ​io --- 处理流的核心工具​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (三)c52学习之旅-点亮LED灯
  • (一)插入排序
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (状压dp)uva 10817 Headmaster's Headache
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • . NET自动找可写目录
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全