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

Ada*_*wis 10 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  
Run Code Online (Sandbox Code Playgroud)

虽然在打开prologix的驱动程序时工作正常,但在尝试导入我的签证驱动程序以及pyVisa的"签证"模块时遇到了问题.诊断问题非常容易,但将签证驱动程序的文件夹重命名为"visa_dir"的修复程序使代码更难以阅读(IMO).

import drivers.visa  
Run Code Online (Sandbox Code Playgroud)

VS

import drivers.visa_dir  
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来处理这个?

zee*_*kay 5

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

import drivers.visa
import pyVisa.visa
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用as:

from drivers import visa
from pyVisa import visa as pyvisa
Run Code Online (Sandbox Code Playgroud)

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

  • 要添加到此,请参阅[此博客文章](http://griddlenoise.blogspot.com/2006/10/namespace-packages-in-python.html)和[PEP 221](http://www.python.组织/开发/ PEPS/PEP-0221 /). (2认同)