You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入子包后,如何无需单独导入即可访问父包命名空间?

关于Python导入操作与命名空间的疑问

有一篇文章对导入操作如何影响命名空间给出了出色的说明,但我发现以下观点并不完全正确:

  • import packagename.nestedmodule会设置packagename = sys.modules['packagename'](无论嵌套层级多少)

我在Spyder控制台中执行了以下代码:

import pyspark.sql as sql, sys

其中pyspark是一个包,sql是其子包(二者同时也是模块)。

上述操作并未在REPL的命名空间中创建pyspark对象,但在sys.modules中同时生成了sys.modules["pyspark"]和sys.modules["pyspark.sql"]条目。

**有没有办法无需单独导入,就能访问对应sys.modules["pyspark"]的父包命名空间?**虽然我不能完全确定,但sys.modules["pyspark"]条目表明pyspark/__init__.py中的代码已执行,那么其中的对象应该已存在于Python维护的某个作用域中。

本问题与我此前的问题不同,但本问题的答案可能会为旧问题提供思路。

补充说明: mr_mo提供了实现该操作的机制说明,若需要快速代码示例,可通过pyspark=sys.modules["pyspark"]将pyspark命名空间引入当前命名空间,使用dir(pyspark)可确认其中对象的可访问性。


内容的提问来源于stack exchange,提问作者user2153235

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:35:09