Типичные соглашения об именах для каталогов Python в пакетах - PullRequest
9 голосов
/ 10 мая 2011

Вопрос
Я хотел бы знать, существует ли стандартное соглашение для именования каталогов 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  

Несмотря на то, что это работало нормально при вызове драйверов прологикса, я столкнулся с проблемой при попытке импортировать мои визовые драйверы, а также модуль pyVisa 'visa'.Диагностику было очень легко диагностировать, но исправление переименования папки моего визового драйвера в visa_dir затрудняет чтение кода (IMO).

import drivers.visa  

против

import drivers.visa_dir  

Есть ли лучший способ справиться с этим?

1 Ответ

5 голосов
/ 11 мая 2011

Пространство имен каждого модуля уникально, поэтому даже если у вас есть два модуля с именем visa, если вы не импортируете их в одно и то же пространство имен с одним и тем же именем, у вас не возникнет никаких проблем. Я предпочитаю абсолютный импорт:

import drivers.visa
import pyVisa.visa

Или вы также можете использовать as:

from drivers import visa
from pyVisa import visa as pyvisa

... и т.д.. Просто будьте осторожны, как вы импортируете вещи. Я бы предпочел (как конечный пользователь), чтобы вы логически структурировали свои модули в своем пакете и не беспокоились о том, чтобы предварительно настроить их для меня.

...