python包之间引用_python 子包引用父包和其他子包
python 子包引用父包和其他子包
python引用子目录很简单, 里面放个__init__.py就可以了. 如何在子目录里面引用其他目录(父目录,爷目录和同辈分目录)呢?
例如: python有项目目录结构:
projectdir/
------------------ __init__.py
| ----------------- core/
|----------------- __init__.py
|---------------- a.py
|----------------- b.py
|----------------- common.py
|------------------ subcore/
|-------------------- __init__.py
|-------------------- common.py
|-------------------- test.py
|------------------- plugins/
|------------------- __init__.py
|------------------- mail.py
|------------------- tel.py
|----------------- common.py
|------------------- utils/
|------------------- __init__.py
|------------------- util.py
|-------------------- log.py
1) 现在 a.py要import util和log, 如何实现呢? 很简单, 所有的common.py内容都一样, 如下:
#!/usr/bin/python2.7
#-*- coding: UTF-8 -*-
#######################################################################
import os, sys, inspect
def script_abspath(frame=inspect.currentframe()):
p = os.path.split(inspect.getfile( frame ))[0]
absdir = os.path.realpath(os.path.abspath(p))
return absdir
def script_abspath_parent(frame=inspect.currentframe()):
return os.path.dirname(script_abspath(frame))
def include_dir(subdir=None, frame=inspect.currentframe()):
# NOTES:
# DO NOT USE __file__ !!!
# dir = os.path.dirname(os.path.abspath(__file__))
# __file__ fails if script is called in different ways on Windows
# __file__ fails if someone does os.chdir() before
# sys.argv[0] also fails because it doesn't not always contains
# the path
#
# realpath() will make your script run, even if you symlink it
p = os.path.split(inspect.getfile( frame ))[0]
incdir = os.path.realpath(os.path.abspath(p))
if incdir not in sys.path:
sys.path.insert(0, incdir)
if subdir:
# use this if you want to include modules from a subfolder
incdir = os.path.realpath(os.path.abspath(os.path.join(p, subdir)))
if incdir not in sys.path:
sys.path.insert(0, incdir)
###########################################################
# include dir and parent dirs
absdir = script_abspath()
while os.path.isdir(absdir):
pkgini = os.path.join(absdir, "__init__.py")
if not os.path.exists(pkgini):
break
if os.path.isdir(pkgini):
break
include_dir(absdir)
absdir = os.path.dirname(absdir)
a.py 如下:
#!/usr/bin/python2.7
#-*- coding: UTF-8 -*-
#
import common
import utils.util
import utils.log
...
test.py 也一样:
#!/usr/bin/python2.7
#-*- coding: UTF-8 -*-
#
import common
import utils.util
import utils.log
import plugins.mail
...
就这么简单.
__init__.py是空文件.
python包之间引用_python 子包引用父包和其他子包相关推荐
- qt如何把父窗口的变量传给子窗口_父窗口和iframe子窗口之间相互传递参数和调用函数或方法...
1.父窗口向子窗口传递参数: 可以在url中添加参数:2.html?a=1&b=2&c=3 然后在子页面上可用js解析,提供一个函数: function getQueryStr(sAr ...
- python中的引用_Python中的引用
我有一个多播网络,需要不断地向所有其他用户发送数据.我不想让程序员不断地改变数据包的发送方式.正因为如此,我试图找出如何引用Python中的任何对象或变量(我是Python新手),这样用户就可以修改它 ...
- python中的引用类型_Python 中的引用和类属性的初步理解
最近对Python 的对象引用机制稍微研究了一下,留下笔记,以供查阅. 首先有一点是明确的:「Python 中一切皆对象」. 那么,这到底意味着什么呢? 如下代码: #!/usr/bin/env py ...
- python怎么调用文件_python 中如何引用头文件
python 引入 导入 自定义模块, python 引入 导入 外部文件 python 引入 导入 自定义模块, python 引入 导入 外部文件 项目中想使用以前的代码,或者什么样的需求致使你 ...
- python import如何使用_python之import引用
关于python的import引用的最大关键是init.py文件的作用,这个文件对于import的方法使用至关重要. 这个是我在搭建自动化框架过程中用到的import的方法使用. 比如说,我现在log ...
- python相对引用_Python 模块相对引用
文件结构如下 python_directory/ ├── __init__.py └── app ├── __init__.py ├── sub1 │ ├── __init__.py │ └─ ...
- python表情包斗图_Python爬虫入门教程 13-100 斗图啦表情包多线程爬取
斗图啦表情包多线程爬取-写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的.关键技术点 aioht ...
- python方法之间加点_python中技巧
1.使用xpath从html文档得到其中元素: 123we为了得到其中的123we元素 tree=html.fromstring(***.text) tt=list(set(tree.xpath(&q ...
- .net项目与下载包之间不兼容时,如何下载NuGet之前版本的包
直接使用install下载会获取最新版本的包,但是此时出现了与项目环境版本不兼容的问题: [1]进入NuGet官网,点击version [2]根据年份选择一个之前的版本点入 [3]点击Framewor ...
- vue3子组件修改父组件值,vue3 子组件修改属性
如何在TypeScript中应用像Jquery之类的第三方JavaScript框架 要在TypeScript引用第三方JavaScript库和框架,首先要了解TypeScript的类型定义文件. Ty ...
最新文章
- Docker配置远程连接端口
- hibernate中的hql查询语句list查询所有与iterate查询所有的区别
- spring boot实现软删除
- java 静态内存图
- CentOS6.4安装Samba(匿名)共享服务器
- 一休和尚 小布偶 晴天娃娃
- 一个迷你ASP.NET Core框架的实现(下)
- redis查询所有key命令_想在生产搞事情?那试试这些 Redis 命令
- python基础(16)之 日期
- 结构设计模式 - Flyweight设计模式(享元设计模式)
- 区块链安全的奥秘之一:非对称加密
- 我对骨骼动画的理解(最精减的骨骼动画类)
- 磁力计椭球拟合使用篇 IMU 加速度、电子罗盘校准
- win10 下 acdsee7 在普通账户下无法运行并崩溃的 BUG
- 尚学堂第十一章多线程习题答案
- Java中进行Debug断点调试
- Vue-cli配置代理服务器,解决跨域请求问题
- 【飞鱼SEO】sem竞价的特点以及相关规则
- Win10 schtasks 不稳定问题
- Python爬虫-网贷之家P2P机构排名查询
热门文章
- CAS:compare and swap
- ioctl(), ioctl_socket()
- __nonnull((1)) 未完待续
- 三菱的触摸屏usb驱动_如何实现一个TK6071IP的触摸屏驱动两个三菱FX1S-30MT的PLC?...
- vld不输出泄漏信息_UV固化设备不单单只有灯管!还有哪些辅动部件?
- Dajngo之ajax(get和post)请求(亲测)
- linux大数据命令操作
- 学校计算机教室局域网的建立,校园局域网组建及配置.pdf
- 18秋c语言程序设计作业答案,西工大18秋《C语言程序设计》平时作业答案.docx
- 单机mongodb最大_mongodb单机多实例主从配置