python 中的 module 和 package

 更新时间:2022年04月14日 16:50:16   作者:zidea   
这篇文章主要介绍了 python 中的 module 和 package ,文章基于Python的相关资料展开对主题的详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下

接着如何在python 中导入 package的分享,这一次是在 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 的文章就介绍到这了,更多相关 module 和 package 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python连接达梦数据库的实现示例

    Python连接达梦数据库的实现示例

    本文主要介绍了Python连接达梦数据库的实现示例,dmPython是DM提供的依据Python DB API version 2.0中API使用规定而开发的数据库访问接口,使Python应用程序能够对DM数据库进行访问
    2023-12-12
  • python3使用flask编写注册post接口的方法

    python3使用flask编写注册post接口的方法

    今天小编就为大家分享一篇python3使用flask编写注册post接口的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python3中No module named _ssl的问题解决

    python3中No module named _ssl的问题解决

    本文主要介绍了python3中No module named _ssl的问题解决,这个错误表示Python导入_ssl模块时失败,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Python开发的实用计算器完整实例

    Python开发的实用计算器完整实例

    这篇文章主要介绍了Python开发的实用计算器,结合完整实例形式分析了Python实现计算器四则运算、开方、取余等相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • python的jinja2模板深入浅出地解析

    python的jinja2模板深入浅出地解析

    Python模板,全称为“Jinja2 Template”,是Python语言中的一种模板引擎。在web应用中,模板一般用于生成页面或其他输出格式。Python的模板引擎为程序员提供了一种非常方便的方式来构建动态内容,强制执行代码结构,并允许从数据中提取特定的信息。Jinja2在Python社区
    2023-06-06
  • python遍历一个目录,输出所有的文件名的实例

    python遍历一个目录,输出所有的文件名的实例

    下面小编就为大家分享一篇python遍历一个目录,输出所有的文件名的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Numpy数组转置的实现

    Numpy数组转置的实现

    本文主要介绍了Numpy数组转置的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python常用的日期时间处理方法示例

    Python常用的日期时间处理方法示例

    这篇文章主要介绍了Python常用的日期时间处理方法示例,本文直接给出实现代码,包含如给定日期向后N天的日期、昨天、今天、将字符串转换成datetime类型等方法,需要的朋友可以参考下
    2015-02-02
  • python游戏实战项目之俄罗斯方块的魅力

    python游戏实战项目之俄罗斯方块的魅力

    迟早一定会挂掉的俄罗斯方块,为什么至今仍是世界游戏之王?它是怎么编写的?本文将给大家详细的介绍,对大家的学习或工作具有一定的参考借鉴价值
    2021-09-09
  • Django框架之中间件MiddleWare的实现

    Django框架之中间件MiddleWare的实现

    这篇文章主要介绍了Django框架之中间件MiddleWare的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论