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是我本地修…

不删除旧版本java_Linux 卸载旧版jdk 并安装新版jdk(转)

1、查看现有版本java -version2、查看jdk的具体版本rpm –qa| grep jdkrpm –qa| grep gcj3、删除已安装jdk包rpm –e –nodeps jdk包4、再次检查jdk版本,确认是否卸载成功java –version显示结果为:/usr/bin/java:No such file or directory5、手动下载…

手机型号大全_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动态代理…

学java要背的单词_学习JAVA必背的8类常用单词

Java常用的词还是挺多的&#xff0c;初学者有空多看看&#xff0c;对快速入门Java编程还是有益的。本文沈阳达内IT培训为大家介绍学习JAVA必背的8类常用单词。1、保留关键字(2个)const ——常量&#xff0c;常数&#xff1a;用于修改字段或局部变量的声明。goto——转到&#x…

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…

java store()_Java.util.Properties.store()

描述所述java.util.Properties.store(OutputStream out,String comments)方法在适合于装载一个格式转换成使用所述负载的属性表在该属性表写此属性列表(key and element )到输出流(InputStream的)方法。声明以下是java.util.Properties.store()方法的声明public void store(Out…

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

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

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

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

php打印错误日志到本地,nginx+php怎么打印php的错误日志?

开启错误级别的设置了吗&#xff1f;如果关闭所有的错误监控&#xff0c;日志文件内依旧是没有数据的。/usr/local/php/etc/php.ini---------------------------error_reporting E_ALL & ~E_DEPRECATED & ~E_STRICTdisplay_errors Offlog_errors On; Log errors to …

spring aop 中@annotation()和自定义注解的使用

在自定义个注解之后&#xff0c;通过这个注解&#xff0c;标注需要切入的方法&#xff0c;同时把需要的参数传到切面去。那么我们怎么在切面使用这个注解。 我们使用这个自定义注解一方面是为了传一些参数&#xff0c;另一方面也是为了省事。 具体怎么省事&#xff0c;看我下面…

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

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

学.net还是php,ASP.NET和php哪个更容易学

ASP.NET和php哪个更容易学发布时间&#xff1a;2020-07-03 11:46:12来源&#xff1a;亿速云阅读&#xff1a;101作者&#xff1a;LeahASP.NET和php哪个更容易学&#xff1f;很多新手对此不是很清楚&#xff0c;为了帮助大家解决这个难题&#xff0c;下面小编将为大家详细讲解&a…

@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([…