python模块导入_python模块导入

不同的执行方式:

从IDE中执行,python程序由IDE设置环境决定。

从系统中执行,python程序由环境变量中的系统变量path决定,从上往下选择。

模块导入顺序:

系统包优先级最高 > 同目录 > sys.path,之所以有这样的差别是因为当前执行目录会优先加入sys.path 的首位。

sys.path是python的搜索模块的路径集。包含当前执行目录、PYTHONPATH系统变量目录、python执行程序目录、python执行程序目录下site-packages下的pth文件.

sys.path除了通过PYTHONPATH及pth文件电脑全局增加搜索模块的路径,也可以在程序中局部增加搜索模块的路径。

# test.py

import sys, os

# 当前目录没有hi模块,报错找不到模块

import hi

Traceback (most recent call last):

ImportError: No module named hi

# hi模块所在位置: /data/hi.py

# 将hi所在模块加入sys.path

sys.path.append("/data")

# 可以正常工作了

import hi

###############################################

#test2.py

import imp

imp.load_source("hi", "C://data/hi.py")

import hi

# 可以自己指定模块的名字,相当与 import hi as h2

imp.load_source("h2", "C://data/hi.py")

import h2

模块导入方式:Python导入模块的几种姿势| 编程派 | Coding Python​codingpy.comv2-f04901020105fdafaa5bb3d1b1c103c9_ipico.jpg

导入时执行:

当导入包时,_init_会先执行;当导入一个模块时,模块的顶层变量会被执行,包括全局变量,类以及函数的声明(类对象,函数对象将被创建,不会被调用),因此在编写模块时一定要注意消除副作用(函数的调用)。

import 语句 和 from 语句

能被 import 的包括:package,package 中的模块,模块中的变量。影响 import 的属性是 __all__, __all__ 是个list,能够影响被 package 中 以 from package import * 被导出的模块,即定义在__all__ 中的模块才会被 from package import * 导出。

__file__:

当模块以文件的形式出现__file__指的是模块文件的路径名,以相对路径执行__file__是相对路径,以绝对路径执行__file__是绝对路径。

为了保证__file__每次都能准确得到模块的正确位置,最好再取一次绝对路径os.path.abspath(__file__)。

sys.modules 的作用

既然python是在 sys.path 中搜索模块的,那载入的模块存放在何处?答案就是 sys.modules,是存放已载入模块的地方。模块一经载入,python 会把这个模块加入 sys.modules 中供下次载入使用,这样可以加速模块的引入,起到缓存的作用。

获取模块的路径

借助 sys.modules和__file__, 可以动态获取所有已加载模块目录和路径:

def get_module_dir(name):

path = getattr(sys.modules[name], '__file__', None)

if not path

raise AttributeError('module %s has not attribute __file__'%name)

return os.path.dirname(os.path.abspath(path))

Python 环境变量

下面几个重要的环境变量,它应用于Python:

变量名 描述

PYTHONPATH PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。

PYTHONSTARTUP Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的文件中的代码。

PYTHONCASEOK 加入PYTHONCASEOK的环境变量, 就会使python导入模块的时候不区分大小写.

PYTHONHOME 另一种模块搜索路径。它通常内嵌于的PYTHONSTARTUP或PYTHONPATH目录中,使得两个模块库更容易切换。

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

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

相关文章

再也不怕SVN冲突:轻松解决SVN冲突

什么时候容易出现冲突? 多个人同时修改了同个文件中的同一行代码 无法进行对比的二进制文件,比如图片等 如何解决冲突? 如上图,test_conflict.py文件发生了冲突,并且多出了几个文件,其中.mine是我本地修…

手机型号大全_2020值得入手的三款手机。每个优秀,选择哪一个?励志故事名言视频...

如今,手机等数码产品更新很快。各种新的技能,让用户真正体验到科技的力量,它可以被描述为“具有多种功能的一个装置。”然而,这么多车型,难免有些人不知道如何选择。当4G和5G手机**的对峙,很多朋友也问小中…

AspectJ

Aspectj与Spring AOP比较 XML配置方式 <aop:aspect>&#xff1a; 定义切面, 包括通知和切点. 是一般的bean//定义切面 public class SleepHelperAspect{public void beforeSleep(){System.out.println("睡觉前要脱衣服&#xff01;");}public void afterSleep…

aixs1 生成java代码_通过axis1.4 来生成java客户端代码

1.首先下载axis-1.4所有的jar包&#xff0c;2.我是直接打开cmd&#xff0c;进入到该jar包的目录下&#xff0c;3.直接运行命令(运行这个命令之前要确定java的环境变量都已配置好)&#xff1a;java -Djava.ext.dirs${lib的目录} org.apache.axis.wsdl.WSDL2Java -o${代码输出路径…

windows分屏_windows内到底藏了多少好东西?

恭喜!点开这篇文章&#xff0c;你将解锁 WIN10 系统内那些不为人知的高效的冷知识&#xff01;相信所有的职场人都会搜索过这样的问题&#xff1a;有哪些高效的办公神器&#xff1f;在之前的文章中&#xff0c;我分享过很多高效神器&#xff0c;如果你感兴趣的话&#xff0c;点…

@Aspect中@Pointcut 12种用法

本文主要内容&#xff1a;掌握Pointcut的12种用法。 Aop相关阅读 阅读本文之前&#xff0c;需要先掌握下面3篇文章内容&#xff0c;不然会比较吃力。 Spring系列第15篇&#xff1a;代理详解&#xff08;java动态代理&CGLIB代理)Spring系列第30篇&#xff1a;jdk动态代理…

asp.net接受表单验证格式后再提交数据_看滴普科技大前端如何玩转el-form-renderer 表单渲染器1.14.0

DEEPEXI 大前端常人道&#xff0c;一入开发深似海&#xff0c;技术学习无止境。在新技术层出不穷的前端开发领域&#xff0c;有一群身怀绝技的开发&#xff0c;他们在钻研前沿技术的同时&#xff0c;也不忘分享他们的成果&#xff0c;回馈社区。下面&#xff0c;就由小水滴带大…

测试用例设计方法_黑盒测试——测试用例设计方法

黑盒测试也称为功能测试或数据驱动测试。通过软件的外部表现来发现其缺陷和错误。在测试时&#xff0c;把被测程序视为一个不能打开的盒子&#xff0c;在完全不考虑程序内部逻辑结构和内部特性的情况下进行。它是在已知产品所应具有的功能前提下&#xff0c;通过测试来检测每个…

SpringAop @Pointcut(“@annotation“)\@Aspect练习

切面记录日志 切面类 Slf4j Aspect Component public class AspectForFeign {Pointcut("execution(public * com.keke.remote..*Feign.*(..))")public void pointcut() {}Around("pointcut()")public Object around(ProceedingJoinPoint joinPoint) thro…

Mybatis缓存机制详解与实例分析

前言&#xff1a; 本篇文章主要讲解Mybatis缓存机制的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出&#xff0c;对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小伙伴儿了&#x1f601; 以下正文开始 Mybat…

delphi语言转为汇编语言_每天5分钟,轻松建立技术图谱 编程语言黑历史

阿T课堂开播啦&#xff01;这里只有干货干锅&#xff0c;没有水坑没有套路&#xff01;计算机编程语言的发展&#xff0c;也是随着计算机本身发展而发展。人类不断的提高科技的同时&#xff0c;也必须使工具的使用越来越简化&#xff0c;从而提高整个社会效率&#xff0c;这其中…

水系图一般在哪里找得到_进展 | 水系钠离子电池研究取得重要进展

水系钠离子电池兼具钠资源储量丰富和水系电解液本质安全的双重优势被视为一种理想的大规模静态储能技术。此前&#xff0c;我们针对这水系钠离子电池体系做了一些探索(Nature Communications 2015, 6, 6401&#xff1b;Advanced Energy Materials 2015, 5, 1501005&#xff1b;…

@Around简单使用示例——SpringAOP增强处理

Around的作用 既可以在目标方法之前织入增强动作&#xff0c;也可以在执行目标方法之后织入增强动作&#xff1b;可以决定目标方法在什么时候执行&#xff0c;如何执行&#xff0c;甚至可以完全阻止目标目标方法的执行&#xff1b;可以改变执行目标方法的参数值&#xff0c;也…

python numpy逆_Python使用numpy计算矩阵特征值、特征向量与逆矩阵

原标题&#xff1a;Python使用numpy计算矩阵特征值、特征向量与逆矩阵 Python扩展库numpy.linalg的eig()函数可以用来计算矩阵的特征值与特征向量&#xff0c;而numpy.linalg.inv()函数用来计算可逆矩阵的逆矩阵。 >>> importnumpy as np >>> x np.matrix([…

Mysql索引数据结构有多个选择,为什么一定要是B+树呢?_面试 (MySQL 索引为啥要选择 B+ 树)

Mysql索引数据结构 下面列举了常见的数据结构 二叉树红黑树Hash表B-Tree&#xff08;B树&#xff09; Select * from t where t.col5我们在执行一条查询的Sql语句时候&#xff0c;在数据量比较大又不加索引的情况下&#xff0c;逐行查询并进行比对&#xff0c;每次需要从磁盘…

一篇搞懂mysql中的索引(大白话版)

容易来说&#xff0c;索引的出现其实就是为了提升数据查询的效率&#xff0c;就像书的目录一样。一本 500 页的书&#xff0c;如果你想快速找到其中的某一个知识点&#xff0c;在不借助目录的情况下&#xff0c;那我估计你可得找一会儿。同样&#xff0c;对于数据库的表而言&am…

sqlite插入时间字段_sqlite 获取最后插入id

(点击上方公众号&#xff0c;可快速关注)SQLite数据库中的表均有一个特殊的rowid字段&#xff0c;它是一个不重复的64位有符号整数&#xff0c;默认起始值为1。rowid别名为oid或_rowid_&#xff0c;但在创建表的SQL声明语句中只能使用rowid作为关键字。如果在创建表的时候设置了…

Dubbo与SpringCloud的架构与区别

Dubbo与SpringCloud的架构与区别 Dubbo架构图 SpringCloud 架构图 总结 框架DubboSpringCloud服务注册中心ZookeeperSpring Cloud Netfix Eureka(nacos)服务调用方式RPCREST API服务监控Dubbo-monitorSpring Boot Admin熔断器不完善Spring Cloud Netflix Hystrix服务网关无Sp…

matlab求微分数值,用MATLAB语言求微积分方程的数值解.(xd^2y)/dx^2-5dy/dx+y=0y(0)=0y'(0)=0...

function dymyfun03(x,y)dyzeros(3,1) %初始化变量dydy(1)y(2); %dy(1)表示y的一阶导数,其等于y的第二列值dy(2)5/x*y(3)-y(1); %dy(2)表示y的二阶导数%ex0808 用ode23 ode45 ode113解多阶微分方程clear,clc[x23,y23]ode23(myfun03,[1,10],[1 10 30]);[x45,y45]ode45(myfun03,[…

springboot 接口404_资深架构带你学习Springboot集成普罗米修斯

这篇文章主要介绍了springboot集成普罗米修斯(Prometheus)的方法&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧&#xff01;Prometheus 是一套开源的系统监控报警框…