【问题标题】:__init__.py correct import layout?__init__.py 正确的导入布局?
【发布时间】:2019-12-03 03:00:22
【问题描述】:

文件结构:

device
   device.py
   __init__.py

__init__.py 只包含一行:

from device import *

device.py 只有一堆函数,我想把它们都包含在 from device import *,除了我必须在 pip 安装后使用from device.device import *

我怎样才能摆脱额外的范围,所以它只是from device import *

【问题讨论】:

  • from . import * =D
  • @sashaaero 这对我不起作用。
  • from dataglove.dataglove import * - 这在 --init--.py 中有效
  • 但是,我注意到它适用于 python 3.6 但不适用于 2.7

标签: python package pypi


【解决方案1】:

您可以在__init__.py 中添加one_function_nameanother_one 之前导入的__all__ = ['one_function_name', 'another_one']

from <package> import * 不是一个好主意,因为您将导入您在文件中导入的包(__all__ 变量可以防止这种情况,请参阅this answer)但这不是一个好习惯。

编辑: sashaaero 评论确实想要你想要的。

【讨论】:

  • 好像太广泛了,因为我有很多功能。
【解决方案2】:

要么:

  • 将函数从device.py 移动到__init__.py,或者
  • __init__.py 中使用from .device import *

【讨论】:

  • 嗯,那我可以听听您的意见吗?基本上,我只是制作一个包装器,因此 API 函数现在在一个文件中处理。那是否会使 device.py 有点无关紧要。我尝试了第二个选项,但没有奏效。
猜你喜欢
  • 1970-01-01
  • 2016-06-14
  • 2017-03-12
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
  • 2015-07-30
相关资源
最近更新 更多