Как вы организуете модули Python?[закрыто]
Вопрос
Когда дело доходит до организации модулей Python, в моей системе Mac OS X полный беспорядок.У меня на жестком диске повсюду валяются пакеты, и нет специальной системы для их организации.
Как вам удается держать все под контролем?
Решение
Мой совет:
- Читать Установка модулей Python.
- Читать Распространение модулей Python.
- Начните использовать easy_install с инструменты настройки.Прочтите документацию по setuptools.
- Всегда используйте виртуальное окружение.Мой каталог site-packages содержит только инструменты настройки и virtualenv.
- Посмотрите новый проект Иэна Бикинга pyinstall.
- Следите за всем Ян Бикинг работает дальше.Это всегда добро.
- При создании собственных пакетов используйте distutils/setuptools.Рассмотрите возможность использования
paster create
(видеть http://pythonpaste.org), чтобы создать первоначальный макет каталога.
Другие советы
В дополнение к PEP8 и easy_install вам следует проверить virtualenv. Virtualenv позволяет вам иметь несколько разных деревьев библиотек Python. На работе мы используем virtualenv с загрузочной средой для быстрой настройки среды разработки / производства, в которой мы все синхронизированы с версиями библиотеки w.r.t и т. Д. Обычно мы координируем обновления библиотеки.
Существует несколько семейств компонентов Python.
<Ол>Материал, который поставляется с Python. Это позаботится о себе.
Материал, который вы получили с easy_install. Это также само по себе.
Пакеты, которые вы должны были получить другим способом, как TARballs или SVN. Создайте папку Компоненты
. Сначала загрузите туда файлы SVN. Каждый раз. Делайте установку оттуда.
Написанные вами пакеты можно использовать повторно. У меня есть папка Projects
с каждым проектом в этой папке. Если проект многоразового использования, у него есть setup.py
, и я фактически запускаю установку, как будто я ее скачал. У меня их немного, но мало. Некоторые из них могут стать проектами с открытым исходным кодом.
Последние приложения, которые вы пишете. У меня есть папка в Проекты
с каждым из этих приложений верхнего уровня. Обычно это большие, бессвязные вещи (например, сайты Django), в которых нет setup.py
. Зачем? Они часто бывают довольно сложными, и для управления ими требуется всего несколько серверных установок, и каждая из этих серверных установок уникальна. Обычно они используют PYTHONPATH
для идентификации своих частей.
Обратите внимание на общую тему. Это либо загруженные вами компоненты, либо проекты, над которыми вы работаете.
Кроме того, я держу это отдельно (в определенной степени) от клиента. У меня есть главный каталог клиентских папок, в каждой из которых есть Проекты, а в каждом проекте - Продажи и Доставка. Не во всех проектах есть как продажи, так и доставка. Р>
Может быть, PEP8 и easy_install может вам помочь?
Я храню весь исходный код для своих пакетов в ~ / Packages /, а затем выполняю стандартную установку с помощью " python2.5 setup.py install " на них. Это бросает в (для меня) /Library/Frameworks/Python/Versions/current/lib/python2.5/site-packages/. Для разработки моего собственного программного обеспечения у меня есть псевдонимы, настроенные для переключения между trunk / branch / 1.0 и т. Д., Предварительно добавив PYTHONPATH. (Я должен запустить 'setup.py build_ext --inplace' в каждом из этих каталогов, прежде чем они будут импортированы должным образом.)
Стоит отметить, что в Python2.6 есть каталог сайтов-пакетов для пользователя , что может оказаться более удобным.
" Модули " Страница документации Python - это полезное руководство по организации кода, в частности "пакетов". разделы
Мой совет - постарайтесь поместить все в каталог (ы) вашего сайта, если у вас нет веских причин не делать этого. И я стараюсь избегать easy_install, потому что обнаруживаю, что он обычно запутывает мой путь sys.path местами для яиц, но это только я. Некоторые люди находят это полезным.
Если у вас много программ, в которых используются разные библиотеки, которые могут конфликтовать друг с другом, вы также можете проверить virtualenv .
Просто наткнулся на этот сайт из другого вопроса StackOverflow: http://infinitemonkeycorps.net/docs/pph/ Это касается не только размещения модулей, но после того, как вы их разместите, напишите, как вы можете легко справляться с документацией, тестированием и распространением.