module模块和包
import 和 from 调用
module 目录有calc.py 和 test.py 两个文件

calc.py文件内容:
def add(x,z):
return x+z def sub(x,z):
return x-z
test.py文件调用:
import calc #默认是同级目录下面查找
print(calc.add(1,2)) from calc import sub
print(sub(10,5))
导入模块按照下面方式查找
import sys
print(sys.path)
['D:\\Study\\module', 'D:\\Study','C:\\Program Files (x86)\\Python36-32\\python36.zip', 'C:\\Program Files (x86)\\Python36-32\\DLLs', 'C:\\Program Files (x86)\\Python36-32\\lib', 'C:\\Program Files (x86)\\Python36-32', 'C:\\Program Files (x86)\\Python36-32\\lib\\site-packages', 'C:\\Program Files\\JetBrains\\PyCharm 2018.1.1\\helpers\\pycharm_matplotlib_backend']
总结下:
执行py文件的,执行文件的中的import 模块,只会导入当前执行文件的路劲导入文件,不会去其他目录查找(除系统提供的目录外).
例: 有如下一个目录结构的

calc文件内容如下:

test文件内容如下:

a文件内容如下:

调用:a.py 发现会报错

为什么报错了?
a.py --> 导入 from module import test (执行module目录中test文件) --> test 文件 import calc (报错) --> 因为当前执行的a.py文件 在当前目录找到calc(就是吧test这文件的内容拿到当前执行py里面来执行)
我们执行a.py文件的时候,只会找当前目录的模块文件,虽然我们导入module文件中的test文件,test文件有import calc模块(import calc.py文件);但是最终还是报错,这是因为我执行的py文件的是a.py ;而test中的import calc只是一个引入文件,并不是执行文件,解释器找到这层的时候,只会按照执行文件这层目录去导入文件,所以解释器只认识a,py这层文件,这时就报错了.这就是上面总结的,反复强调 执行py文件的,执行文件的中的import 模块,解释器只会导入当前执行文件的路劲导入文件,不会去其他目录查找(除系统提供的目录外),
如何修改:
test.py文件中的import calc 修改为 from module import calc 修改完就正常了
module模块和包的更多相关文章
- module模块和包(十七)
在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了. 为此 Python 提供了一个办法,把这些定义存放在文 ...
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
- python模块与包的导入
1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...
- python模块及包的导入
一.模块 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc".&q ...
- python 深入模块和包
模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...
- Python中的模块与包
标准库的安装路径 在import模块的时候,python是通过系统路径找到这些模块的,我们可以将这些路径打印出来: >>> pprint.pprint(sys.path) ['', ...
- Python类、模块、包的区别
类 类的概念在许多语言中出现,很容易理解.它将数据和操作进行封装,以便将来的复用. 模块 模块,在Python可理解为对应于一个文件.在创建了一个脚本文件后,定义了某些函数和变量.你在其他需要这些功能 ...
- python学习笔记13(模块、包)
在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 模块文件以.py后缀结 ...
- python模块与包加载机制
模块的搜索路径: When a module named spam is imported, the interpreter searches for a file named spam.py in ...
随机推荐
- 关于dubbo通信协议之对比
对dubbo的协议的学习,可以知道目前主流RPC通信大概是什么情况, dubbo共支持如下几种通信协议: dubbo:// rmi:// hessian:// http:// webservice:/ ...
- 学习使用NotePad++
参考使用Notepad的快捷键: http://www.cnblogs.com/jungege/p/6003992.html ================================== 实用 ...
- problem:为什么会有options请求
为了安全考虑,浏览器对资源访问有同源限制的问题,也就是web应用程序只能访问和它同一协议同一域名同一端口的web应用程序上的资源. 通过跨域资源共享机制可以让资源在浏览器中访问与该资源本身不同域的资源 ...
- PAT 乙级 1036 跟奥巴马一起编程(15) C++版
1036. 跟奥巴马一起编程(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 美国总统奥巴马不仅呼吁所有人 ...
- python 指定文件编码的方法
import sys reload(sys) sys.setdefaultencoding('utf-8')
- 理解 neutron(15):Neutron Linux Bridge + VLAN/VXLAN 虚拟网络
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- oracle em管理平台
检查em有没有打开 https://172.30.2.120:1158/em/console/logon/logon 输入你配置的账号密码 界面如下图所示
- android实现3D Gallery 轮播效果,触摸时停止轮播
1.轮播控件涉及到的两个类 CarouselViewPager.java public class CarouselViewPager extends ViewPager { @IntDef({RES ...
- T-SQL 视图
use StudentManager go --判断视图是否存在 if exists(select * from sysobjects where name='view_ScoreQuery') dr ...
- IDEA配置打可运行jar包
IDEA打包可以运行的jar包大体有两种方式:一种是比较方便的配置maven:一种是直接配置IDEA采用Build Artifacts打包. 配置maven打包,在pom.xml里面配置build插件 ...