Можно ли использовать два пакета Python с одинаковым именем?

У меня вопрос по импорту. Вопрос может показаться немного надуманным, но его цель - изучить ограничения использования абсолютного импорта для всех операций импорта в пакете. PEP8 настоятельно не приветствует относительный импорт (отредактируйте: и в Руководстве по стилю Google Python говорится, что никогда не следует их использовать).

Допустим, вам даны два больших пакета, у которых оба одинаковых name и оба используют абсолютный импорт в соответствии с PEP8:

    /pkg1
        mod1.py (contains an absolute import: 'import pkg1.mod2')
        mod2.py
        ...

    /pkg1
        mod1.py (contains an absolute import: 'import pkg1.mod3')
        mod3.py
        ...

Также предположим, что вы работаете над проектом Python, в котором вы хотите использовать оба пакета. Это может произойти, например, если вы хотите использовать две версии одного и того же пакета в проекте.

Есть ли способ включить оба пакета в иерархию вашего проекта, чтобы вы могли свободно использовать модули из обоих пакетов в вашем проекте ?

В качестве решения допустимо использовать псевдонимы импорта и временно изменять sys.path. Но нельзя изменять содержимое любого каталога пакетов.

11
задан cjerdonek 21 February 2011 в 08:04
поделиться