首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否引用包含包中的对象?

是否引用包含包中的对象?
EN

Stack Overflow用户
提问于 2011-02-03 13:54:27
回答 1查看 92关注 0票数 1

我有一个名为spam的包,其中包含在同一个包中的__init__.py中的变量_eggs,在boiler.py中,我有类Boiler

Boiler中,我希望在包的__init__.py文件中引用_eggs。有没有办法可以做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-03 15:07:38

检索该值的最合适方法是通过显式的相对导入:

代码语言:javascript
运行
复制
from . import _eggs

但是,要记住的一件事是,以下命令行调用将无法工作:

代码语言:javascript
运行
复制
python spam/boiler.py

这不起作用的原因是解释器无法将任何直接执行的文件识别为包的一部分,因此相对导入将失败。

但是,通过将当前工作目录设置为包含"spam“文件夹的目录,您可以将该模块执行为:

代码语言:javascript
运行
复制
python -m spam.boiler

这为解释器提供了足够的信息来识别boiler.py在模块层次结构中的位置,并正确地解析相对导入。

这只适用于Python2.6或更高版本-以前的版本根本不能处理从main的显式相对导入。(有关详细信息,请参阅PEP 366 )。

如果您只是从另一个文件执行import spam.boiler,那么这应该适用于任何允许显式相对导入的Python版本(尽管Python2.5可能需要from __future__ import absolute_imports才能正确启用此功能)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4882960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档