首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python模块导入

Python模块导入
EN

Stack Overflow用户
提问于 2014-08-06 19:05:42
回答 4查看 110关注 0票数 0

我正在开发一个GUI应用程序。假设我有一个文件main.py,它位于根目录中,我想导入这样的小部件:

代码语言:javascript
复制
from widgets import FancyWindow, ColorPicker
# ...

我的应用程序的结构如下:

代码语言:javascript
复制
| main.py
+ widgets/
    | __init__.py
    | fancy_window.py
    | color_picker.py
...

IIRC,我必须从其他模块导入类,如下所示:

代码语言:javascript
复制
from widgets.color_picker import ColorPicker
from widgets.fancy_window import FancyWindow

因此,我的问题是,我是否可以在widgets/__init__.py中做些什么,这样我就可以以我想要的方式进行导入了?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-06 19:11:31

您实际上已经在那里了,只需让您的__init__.py有这两行:

代码语言:javascript
复制
from widgets.color_picker import ColorPicker
from widgets.fancy_window import FancyWindow

然后,您在__init__.py中导入的任何东西(以及您定义的任何其他符号)都是可用的。

例如,如果你把:

代码语言:javascript
复制
apple = 5

__init__.py中,您也可以这样做:from widgets import apple。没有魔法:)

票数 1
EN

Stack Overflow用户

发布于 2014-08-06 19:13:34

最好的方法是使用__init__.py来执行包所需的设置。

代码语言:javascript
复制
# __init__.py
from fancy_window import FancyWindow
from color_picker import ColorPicker

然后在main.py中,您可以直接执行导入。

代码语言:javascript
复制
# main.py
from widgets import FancyWindow, ColorPicker

__init__.py中打包所有东西的更方便的方法

代码语言:javascript
复制
# __init__.py
from fancy_window import *
from color_picker import *
票数 1
EN

Stack Overflow用户

发布于 2014-08-06 19:16:23

__init__.py中,您可以导入模块,然后导出它们:

代码语言:javascript
复制
from fancy_window import FancyWindow
from color_picker import ColorPicker

__all__ = [FancyWindow, ColorPicker]

现在,您可以执行以下操作:

代码语言:javascript
复制
from widgets import * # Only imports FancyWindow and ColorPicker
from widgets import FancyWindow
from widgets import ColorPicker
import widgets
color_picker = widgets.ColorPicker()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25168235

复制
相关文章

相似问题

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