Я разрабатываю пакет python для обработки рабочего процесса в своей студии, и я организую свой проект по рабочей области. Кроме того, поскольку этот пакет постоянно растет и расширяется, у меня есть пакет «dev» и «опубликованный». Каждый раз, когда у меня есть какая-то большая новая функция, и я думаю, что код стабилен, я копирую файлы с «dev» в «pub», делая их доступными для команды. Мне нравится эта система, потому что все вещи разделены и код чист.Разработка пакета python и относительный импорт с псевдонимом
Моя структура проекта выглядит следующим образом:
/scripts_dir
/dev
__init__.py
/anim
__init__.py
cls.py
/char
__init__.py
cls.py
/pub
__init__.py
/anim
__init__.py
cls.py
/char
__init__.py
cls.py
отмечают, что scripts_dir не имеет init.py файл, так что это не входит в пакет. Это просто папка с контейнером.
Единственное, с чем я столкнулся, - это импорт внутри самого пакета. Прямо сейчас, каждый раз, когда мне нужно импортировать модуль, который не находится в той же папке, мне нужно указать полный путь. Поэтому я вынужден включать основное имя пакета:
import dev.anim.cls as acl
это означает, что каждый раз, когда я хочу, чтобы опубликовать свой код, я должен идти в каждый файл и изменить операторы импорта в
import pub.anim.cls as acl
I 'видели, что в Python 2.5+ можно использовать относительный импорт в виде
from ..anim import cls
cls.someFunction()
, который получает очень близко к где я хочу быть. Но при этом я потерял возможность установить псевдоним для модуля, а в некоторых случаях даже возможность установить пространство имен вообще (которое я всегда стараюсь использовать, чтобы избежать конфликтов)! В моем случае модули в каждой папке имеют одинаковые имена, поэтому мне нужно пространство имен для папки (anim, char, ...)
Кто-нибудь знает, как лучше справиться с этой проблемой? Возможно ли иметь относительный импорт с псевдонимом?
Любая помощь была бы принята с благодарностью!
Я действительно использую git. Я использую его для сохранения версий моего кода. –
Как я могу использовать Git для создания разных файлов для разработки и публикации? То, как я его использую, теперь у меня все еще есть 1 файл, над которым я работаю, а старые версии сохранены в папке .git ... –
Git имеет ветви, и вы можете легко объединить одну ветку на другую. Очень распространенный рабочий процесс - иметь «ведущую» ветвь, которая является производственным кодом и ветвью «развития», где вы добавляете новые функции. Когда у вас есть ошибка в производственной версии, вы исправляете ее на хозяине и заносите ее в ветку разработки. Когда ваша версия разработки готова, вы объедините ее на главной ветке, чтобы она стала новой производственной версией. И у вас есть две среды - одна для разработки и одна на мастере - или просто переход от одной ветви к другой. –