2016-08-28 3 views
1

Я написал пакет python, который включает в себя множество модулей. Модули импортируют друг друга в пакет. Теперь, после завершения, я хочу переместить мой пакет в другой пакет в качестве подкаталога. Но я не могу этого сделать, потому что теперь все импорты получают ошибки, потому что они не могут найти модули на своем новом пути.Перемещение пакета python без беспорядочного внутреннего импорта

Например -

В модуле my_package.a у меня есть:

x = 5 

В модуле my_package.b:

from my_package.a import x 
print x 

До того как я сделал: from my_package import b, и теперь я хочу сделать from tools.my_package import b, и получить тот же результат.

Каков правильный путь для изменения пути логики пакета без необходимости добавления нового пути к sys.path?

+1

Можете ли вы опубликовать структуру своей папки и пример того, как вы в настоящее время пишете свой импорт? – Blender

+0

Да только что добавил упрощенный пример –

+0

Я имею в виду внутри вашего пакета. Как в 'my_package', как вы импортируете вещи изнутри? – Blender

ответ

1

Я хотел бы использовать относительный импорт внутри:

from .a import x 

Если ваш модуль является автономным, вы можете переместить его без проблем, если он использует относительный импорт.

+0

Это именно то, что мне нужно для себя, спасибо! Только одна проблема связана с пакетами, которые я загрузил и не был таким способом. Есть ли способ сделать то, что я изначально спросил? –

+0

Почему вы вкладываете пакеты, загруженные в ваш проект? – Blender

+0

Я работаю в автономной сети и создаю рамки для всех моих работников. –

Смежные вопросы