问题
我想知道是否存在计划作为模块导入的Python目录命名的标准约定。意味着该目录包含空白__init__.py
背景
直到最近,我几乎没有考虑过,只根据在文件系统级别有意义的命名。让我遇到麻烦的是,在文件系统级别有意义的东西对其他开发人员的独立模块也有意义。请考虑以下目录:
+ drivers
+ prologix
- __init__.py
- driver_a.py
- driver_b.py
+ visa
- __init__.py
- driver_a.py
- driver_b.py
__init__.py
ringout.py <-- simple file to ring-out the drivers
虽然在打开prologix的驱动程序时这很好用,但在尝试导入我的签证驱动程序以及pyVisa的“签证”模块时遇到了问题。诊断问题非常容易,但将签证驱动程序的文件夹重命名为“visa_dir”的修复程序使代码更难以阅读(IMO)。
import drivers.visa
vs
import drivers.visa_dir
有更好的方法来解决这个问题吗?
答案 0 :(得分:5)
每个模块的命名空间都是唯一的,所以即使你有两个名为visa
的模块,只要你避免将它们导入到具有相同名称的同一命名空间中,你就不会有任何问题。我倾向于选择绝对进口:
import drivers.visa
import pyVisa.visa
或者你也可以使用as
:
from drivers import visa
from pyVisa import visa as pyvisa
...等。要小心你如何导入东西。我更喜欢(作为最终用户)你在你的软件包中逻辑地构建你的模块,而不用担心为我预先修改它们。