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 调用DLL操作抄表机
Jan 12 Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
web.py在模板中输出美元符号的方法
Aug 26 Python
python基于xml parse实现解析cdatasection数据
Sep 30 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
Django使用httpresponse返回用户头像实例代码
Jan 26 Python
Python实现二维数组输出为图片
Apr 03 Python
Python写一个基于MD5的文件监听程序
Mar 11 Python
Pandas之MultiIndex对象的示例详解
Jun 25 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
python线程信号量semaphore使用解析
Nov 30 Python
Python中实现输入一个整数的案例
May 03 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
Terran魔法科技
2020/03/14 星际争霸
php 启动时报错的简单解决方法
2014/01/27 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
关于python多重赋值的小问题
2019/04/17 Python
Python序列化pickle模块使用详解
2020/03/05 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
高校毕业生登记表自我鉴定
2013/11/03 职场文书
产假请假条
2014/04/10 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书