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线程池的实现实例
Nov 18 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 Python
用Python解决计数原理问题的方法
Aug 04 Python
Python生成随机密码的方法
Jun 16 Python
windows10下python3.5 pip3安装图文教程
Apr 02 Python
Python 带有参数的装饰器实例代码详解
Dec 06 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
python词云库wordCloud使用方法详解(解决中文乱码)
Feb 17 Python
详解Python多线程下的list
Jul 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
一个简单的域名注册情况查询程序
2006/10/09 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
PHP的PSR规范中文版
2013/09/28 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python中二维阵列的变换实例
2014/10/09 Python
Python中类的继承代码实例
2014/10/28 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
python实现简单猜单词游戏
2020/12/24 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
美国钻石商店:Zales
2016/11/20 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
.NET笔试题(20个问题)
2016/02/02 面试题
自考毕业生自我鉴定
2013/11/04 职场文书
社区庆八一活动方案
2014/02/02 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
Python编写冷笑话生成器
2022/04/20 Python