接着如何在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实现RSA加密解密
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?