python中的模块调用_Python中模块互相调用的例子
Python中模块互相调用容易出错,经常是在本地路径下工作正常,切换到其他路径来调用,就各种模块找不到了。解决方法是通过 __file__
定位当前文件的真实路径,再通过 sys.path.append()
来获取相对路径更新 $PATH
即可。
假设代码结构如下:
- mod_a
__init__.py # 模块文件夹内必须有此文件
aaa.py
- mod_b
__init__.py # 模块文件夹内必须有此文件
bbb.py
- ccc.py
调用同级模块
如果aaa.py要调用bbb.py的内容,可以在aaa.py中如下写:
import sys
sys.path.append(osp.join(osp.dirname(__file__), '..')) # 扫除路径迷思的关键!
from mod_b.bbb import *
调用下级模块
如果ccc.py要调用bbb.py的内容,可以在ccc.py中如下写:
from mod_b.bbb import *
调用上级模块
如果aaa.py要调用ccc.py的内容,可以在aaa.py中如下写:
import sys
sys.path.append(osp.join(osp.dirname(__file__), '..'))
from ccc import *
代码示例:
aaa.py如下:
# -*- coding: utf-8 -*-
from __future__ import print_function
import os.path as osp
import sys
sys.path.append(osp.join(osp.dirname(__file__), '..'))
from mod_b.bbb import *
from ccc import *
def print_a():
print('this is a')
def _call_mod_b():
print_a()
print_b()
def _call_mod_c():
print_c()
if __name__=='__main__':
_call_mod_b()
_call_mod_c()
bbb.py如下:
# -*- coding: utf-8 -*-
from __future__ import print_function
def print_b():
print('this is b')
if __name__=='__main__':
pass
ccc.py如下:
# -*- coding: utf-8 -*-
from __future__ import print_function
from mod_b.bbb import *
def print_c():
print('this is c')
def _call_mod_b():
print_c()
print_b()
if __name__=='__main__':
_call_mod_b()
如此,当不管在何处调用aaa.py时,结果都一样,如下:
this is a
this is b
this is c
如果调用ccc.py,结果如下:
this is c
this is b
python中的模块调用_Python中模块互相调用的例子相关推荐
- python中的模块原则_python 的模块与包
一 模块 1.什么是模块 模块是一系列功能的结合体 分为三大类: 1.内置的模块 2.第三方的模块 3.自定义的模块 一个 python 文件本身就是一个模块,文件名:m.py 模块名: ...
- python中importlib模块安装_Python中标准模块importlib详解
Python中标准模块importlib详解 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外 ...
- python中大括号是什么_Python中模块(Module)和包(Package)到底是什么,有什么区别?...
1. 模块(Module) 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个 ...
- python导入模块快捷键_Python中的模块导入和读取键盘输入的方法
导入模块 import 语句 想使用Python源文件,只需在另一个源文件里执行import语句,语法如下: ? 当解释器遇到import语句,如果模块在当前的搜索路径就会被导入. 搜索路径是一个解释 ...
- python url模块介绍_python 中 urlparse 模块介绍
urlparse模块主要是用于解析url中的参数 对url按照一定格式进行 拆分或拼接 1.urlparse.urlparse 将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路 ...
- python中parse是什么_Python中optparse模块使用浅析
最近遇到一个问题,是指定参数来运行某个特定的进程,这很类似Linux中一些命令的参数了,比如ls -a,为什么加上-a选项会响应.optparse模块实现的也是类似的功能,它是为脚本传递命令参数. 使 ...
- python 当前时间的前一天_python中time、datetime模块的使用
python中time.datetime模块的使用 1.前言 如果您从事过python web的开发,那一定有过这样的经历,对于各种复杂繁琐的业务逻辑,掺杂着各种各样的时间约束,让人很容易搞的头晕眼花 ...
- python中os模块教程_python os模块功能和方法总结
os.sep 可以取代操作系统特定的路径分割符 os.linesep 字符串给出当前平台使用的行终止符.例如,Windows使用' ',Linux使用' ' 而Mac使用''. os.nam ...
- pythonmathcot函数_math库是python语言的数学模块吗_Python中的数学模块:Math和Cmath
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 当我们在日常生活中编写程序时,我们通常遇到需要使用数学来完成任务的情况.像其他编程语言一样,Python提 ...
最新文章
- python实训心得2000_实训总结万能版2000字五篇
- ubuntu sudoers配置错误
- 高程 第6章面向对象的程序设计 6.1 理解对象
- 交叉编译_Golang交叉编译
- poj-2231(Moo Volume) 递推
- Win10安装华三模拟器各种疑难问题
- 【My Project】数字频率测量FPGA实现
- TeamViewer远程访问
- 协鑫集成“熄灯工厂”装上ET工业大脑,验证订单命中率可提高3.99%
- objective-c 语法快速过(4)
- [Unity] Animation Blend Tree 中混合值变化时部分骨骼错误旋转 360 度的解决办法:将 Humanoid 改成 Generic
- 述职答辩提问环节一般可以问些什么_内部资料,仅供阿里在职同事传阅:晋升答辩成功要诀...
- 第15章 音乐可视化(《Python趣味创意编程》教学视频)
- 美团外卖返利小程序-饿了么外卖返利公众号系统 – 程序侠
- SQL 基础教程:SQL 通配符
- matlab符号运算与数值运算的转化
- C51玩8x8LED点阵:PointGame —— 收藏数爆炸的LED小游戏
- 软件架构详解(附图)
- 几何画板如何添加按钮
- win10打开蓝牙_这4个Win10新增的快捷键,提高效率必备
热门文章
- Spring Data Jpa出现Not supported for DML operations
- tomcat的localhost_access_log日志文件
- 带负荷测试要求二次最小电流_差动保护带负荷测试
- 为什么css效果在本地测试没问题,上传到服务器后却显示位置乱动,css下拉菜单本地正常,上传后360浏览器中显示错位,火狐、IE8显示正常...
- HashMap的五种遍历方法
- http状态 404 - 未找到_404终结者来了!
- Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed betwee...
- Apollo限制app获取配置
- java 连接数据库查询_JAVA连接数据库,查询功能怎么写
- 随机生成指定个数学生的语文数学外语成绩并求平均值