python - 如何在包中包含可选模块
问题描述
我正在制作一个基于 Pyaudio 的包来处理一些音频处理和播放,
我想在 gui.py(Gui 类)中创建一个可选的 Gui 类,它是一个基于 PyQt5 的 gui 控制台。
但是,由于该包主要是与音频相关的包。我想让 Gui 类成为一个可选的导入,这样当用户在没有 PyQt5 依赖的情况下导入主模块时,他们当然仍然可以使用除了 gui 部分的模块。
src
----__init__.py
----myaudio.py
----mygui.py
#__init__.py
from .myaudio import Pyaudio
try:
from .mygui import Mygui
except:
raise Warning("no PyQt5 found, Mygui not available")
#mygui.py
import PyQt5
import myaudio
可以在init中使用 try以便在捕获到异常时跳过整个 import mygui 吗?myaudio 完全独立于 mygui。我不确定在这种情况下什么是好的做法。
非常感谢。
解决方案
那么为什么你需要导入你的子模块__init__.py
呢?
为什么不让您的用户将它们导入为from your_package.myaudio import Pyaudio
. 在这种情况下,您无需执行任何操作。
如果他们想使用 GUI,他们只需使用from your_package.mygui import Mygui
.
推荐阅读
- c# - 尝试登录 HttpWebRequest 和 HttpWebResponse c# WPF
- windows - 以全屏/信息亭模式启动桌面 PWA
- powershell - 在Powershell中将管道分隔文件更改为逗号分隔
- java - 如何让扫描仪停止接收输入?
- python - 我可以用 python 连接到 pixhawk 吗?
- css - 位置:在 Safari 中打开虚拟键盘时,粘滞不起作用
- javascript - Javascript:需要帮助从美国中部时间(没有 DST)转换为带 DST 的 America/New_York
- java - 在按下后退键时,一切都被最小化
- dialogflow-es - 从后端( Node.js )更新 Dialogflow“转移呼叫”字段
- angular - 向我的自定义离子组件添加功能颜色属性