有没有一种方法可以为整个包导入Python模块?

9
我有一个包结构,看起来像这样:

├── Plugins
│   ├── Eight_Ball.py
│   ├── Ping.py
│   ├── Weather.py
│   ├── __init__.py

每个包内的.py文件都需要从项目中的其他位置导入一些模块。我不希望包中的每个文件都以

开头。

from ..Utils.constants import Plugin_Type
from ..Models.Plugin import Plugin
from ..Models.Singleton import Singleton

那么有没有一种方法可以让Plugins包中的文件默认具有这些导入呢?


可能是重复的问题?https://dev59.com/TknSa4cB1Zd3GeqPLB6x - Jason Cemra
1
没有任何可接受的方式。通常不鼓励隐藏依赖关系。 - wim
@wim 我已经在 Plugin 中导入了 Plugin_Type。使用以下代码是否可以呢?from ..Models.Plugin import Plugin, Plugin_Typefrom ..Models.Singleton import Singleton - TWOF
1个回答

7
简而言之,不能让Plugins包中的文件默认导入任何东西。
虽然通常不建议使用from module import *,但如果你真的想节省那几行代码,你可以创建一个通用的导入文件,像这样导入所有你需要的内容: common_imports.py:
  from ..Utils.constants import Plugin_Type
  from ..Models.Plugin import Plugin
  from ..Models.Singleton import Singleton

other_files.py:

  from .common_imports import *

再次强调,不建议使用from module import *,我建议您只需在每个文件开头包含这些几行代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接