包中Python目录的典型命名约定

时间:2011-05-10 19:35:38

标签: python directory naming-conventions

问题
我想知道是否存在计划作为模块导入的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  

有更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:5)

每个模块的命名空间都是唯一的,所以即使你有两个名为visa的模块,只要你避免将它们导入到具有相同名称的同一命名空间中,你就不会有任何问题。我倾向于选择绝对进口:

import drivers.visa
import pyVisa.visa

或者你也可以使用as

from drivers import visa
from pyVisa import visa as pyvisa

...等。要小心你如何导入东西。我更喜欢(作为最终用户)你在你的软件包中逻辑地构建你的模块,而不用担心为我预先修改它们。