Python: проблема с локальными модулями, отслеживающими глобальные модули - PullRequest
12 голосов
/ 29 января 2009

У меня пакет настроен так:

packagename/
    __init__.py
    numbers.py
    tools.py
    ...other stuff

Теперь внутри tools.py, я пытаюсь импортировать стандартный библиотечный модуль fractions. Однако сам модуль fractions импортирует модуль numbers, который должен быть в стандартной библиотеке.

Проблема в том, что он пытается импортировать модули numbers из пакета my (т.е. мой numbers.py скрывает модуль stdlib numbers), а затем вместо этого жалуется импорт модуля stdlib.

У меня вопрос: есть ли обходной путь, чтобы я мог сохранить текущую структуру моего пакета, или это единственное решение для переименования моего собственного модуля-нарушителя (numbers.py)?

Ответы [ 2 ]

8 голосов
/ 29 января 2009

абсолютный и относительный импорт можно использовать начиная с python2.5 (с __future__ import) и, кажется, это то, что вы ищете.

5 голосов
/ 29 января 2009

Я стараюсь избегать дублирования стандартной библиотеки. Как насчет переименования вашего модуля в "_numbers.py"?

И, конечно, вы можете сделать:

import _numbers as numbers
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...