2016-10-24 4 views
0

Я разрабатываю пакет 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, ...)

Кто-нибудь знает, как лучше справиться с этой проблемой? Возможно ли иметь относительный импорт с псевдонимом?

Любая помощь была бы принята с благодарностью!

ответ

0

А как же использовать правильное программное обеспечение для управления версиями (например, git или mercurial ...)?

+0

Я действительно использую git. Я использую его для сохранения версий моего кода. –

+0

Как я могу использовать Git для создания разных файлов для разработки и публикации? То, как я его использую, теперь у меня все еще есть 1 файл, над которым я работаю, а старые версии сохранены в папке .git ... –

+0

Git имеет ветви, и вы можете легко объединить одну ветку на другую. Очень распространенный рабочий процесс - иметь «ведущую» ветвь, которая является производственным кодом и ветвью «развития», где вы добавляете новые функции. Когда у вас есть ошибка в производственной версии, вы исправляете ее на хозяине и заносите ее в ветку разработки. Когда ваша версия разработки готова, вы объедините ее на главной ветке, чтобы она стала новой производственной версией. И у вас есть две среды - одна для разработки и одна на мастере - или просто переход от одной ветви к другой. –