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程序设计入门(3)数组的使用
Jun 16 Python
Python对象体系深入分析
Oct 28 Python
python实现下载指定网址所有图片的方法
Aug 08 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
基于Python log 的正确打开方式
Apr 28 Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
Python3.4解释器用法简单示例
Mar 22 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
如何在python中处理配置文件代码实例
Sep 27 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中经典方法实现判断多维数组是否为空
2011/10/23 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
Python连接SQLServer2000的方法详解
2017/04/19 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
女大学生自我鉴定
2013/12/09 职场文书
幼儿园评语大全
2014/04/17 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
导游词之日月潭
2019/11/05 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
table不让td文字溢出操作方法
2022/12/24 HTML / CSS