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 相关文章推荐
Python and、or以及and-or语法总结
Apr 14 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
微信跳一跳游戏python脚本
Apr 01 Python
对numpy中数组转置的求解以及向量内积计算方法
Oct 31 Python
在python中获取div的文本内容并和想定结果进行对比详解
Jan 02 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
程序员的七夕用30行代码让Python化身表白神器
Aug 07 Python
django fernet fields字段加密实践详解
Aug 12 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 Python
python新手学习使用库
Jun 11 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
Python中如何获取类属性的列表
2016/12/26 Python
如何用python整理附件
2018/05/13 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
Python 实现自动导入缺失的库
2019/10/29 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
电脑专业个人求职信范文
2014/02/04 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
扬州个园导游词
2015/02/06 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏
Mysql 文件配置解析介绍
2022/05/06 MySQL