python在package下继续嵌套一个package


Posted in Python onApril 14, 2022

我们接着上一次分享,这一次是在 package 下继续嵌套一个 package ,项目目录如下

pkg1
---__init__.py
---mod1.py
------pkg2
---------__init__.py
---------mod2.py
import pkg1.pkg2.mod2

我们尝试将 mod2 进行导入,这一次将先导入 pkg1 然后 pkg2 最后导入 mod2

import pkg1
import pkg2
import mod2

从输出上来看,我们发现 mod1 并没有自动被导入进来。

import pkg1.pkg2.mod2

pkg1.pkg2.mod2.say_hi()

我们通过pkg1.pkg2.mod2.say_hi()来访问 mod2 中 say_hi 函数。

print('pkg1' in sys.modules)#True
print('pkg1.pkg2' in sys.modules)#True
print('pkg1.pkg2.mod2' in sys.modules)#True

通过给导入 module 起一个别名方式来快捷地访问 mod2 module 对象的属性。python 会自动执行可以访问到 mod2 经过的 package ,通过输出不难发现这些 package 已经被导入,并添加到了 sys.modules 缓存中。

import pkg1.pkg2.mod2 as mod2

mod2.say_hi()
pkg1
---__init__.py
---mod1.py
------pkg2
---------__init__.py
---------mod2.py
main.py

在 pkg1 package 下 __init__.py

import pkg1.pkg2.mod2
print("import pkg1")

这我们在 pkg1 package 下的 __init__.py 文件导入 mod2 module 是绝对路径 pkg1.pkg2.mod2。表示我们执行 __init__.py 文件是在 pkg1 外面执行,所以路径中也包含了 pkg1,对于这个 project 来说,main.py 是入口文件,要执行这个项目,我们只需要执行文件夹下 main.py 文件即可。pkg1 和 main.py 位于同一个目录级别,任何子模块(sub-module)都是

import pkg1.pkg2.mod2 as mod2

mod2.say_hi()

为了解释我们进一步说明,我们再去创建一个项目,项目下放两个

main.py
my_mod.py
import socket
x=2
def say_hi():
    print("say hi from my mod")

在 main.py 代码如下

import my_mod as mod

print(mod.x)
print(mod.socket.gethostname())

从而我们知道,我们在 main.py 导入 my_mod 作为,然后在 my_mod 文件导入 socket module 可以通过 mod.socket 导入。

server
---app.py

这里我们 app.py 里只添加了一个语句,在终端输出

print("running app")

在 python 中,可以在目录下搜索指定的文件并执行,python 解释器提供 -m 参数可以让我们指定module 名称来执行一个 python module 文件,所以可以通过下面语句来运行 server 文件夹下的 app.py 文件。

python -m server.app

python 会在 sys.path 路径搜索 `server/app.py

我们也可以将 server 下的 app.py 重命名为 __main__.py 如下

server
---__main__.py

这样就可以直接通过 python -m server 语句来执行 server package 下的 __main__.py 文件。当然我们可以同时在 server package 创建一个 __init__.py 和 __main__.py 两个文件。

到此这篇关于 python 中的 module 和 package 的文章就介绍到这了!

Python 相关文章推荐
opencv python 图像去噪的实现方法
Aug 31 Python
简单了解Python生成器是什么
Jul 02 Python
解决python flask中config配置管理的问题
Jul 26 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
详解python中的模块及包导入
Aug 30 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
python 绘制国旗的示例
Sep 27 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 Python
Python requests库参数提交的注意事项总结
Mar 29 Python
Github 使用python对copilot做些简单使用测试
使用Python拟合函数曲线
Apr 14 #Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
python中 .npy文件的读写操作实例
Apr 14 #Python
Python Matplotlib绘制等高线图与渐变色扇形图
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 #Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
You might like
多文件上传的例子
2006/10/09 PHP
PHP写MySQL数据 实现代码
2009/06/15 PHP
php self,$this,const,static,->的使用
2009/10/22 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
node跨域请求方法小结
2017/08/25 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
护士自荐信范文
2013/12/15 职场文书
调研座谈会发言材料
2014/08/23 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
高中家长意见怎么写
2015/06/03 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
nginx访问报403错误的几种情况详解
2022/07/23 Servers