2008-10-05 3 views
12

Когда дело доходит до организации модулей python, моя система Mac OS X является беспорядком. У меня есть пакеты, которые лежат повсюду на моем hdd, и нет конкретной системы для их организации.Как вы организовываете модули Python?

Как вы держите все управляемым?

ответ

12

Мой совет:

  • Read Installing Python Modules.
  • Прочитано Distributing Python Modules.
  • Начать использовать easy_install с setuptools. Прочтите документацию для setuptools.
  • Всегда используйте virtualenv. Каталог моих сайтов содержит setuptools и virtualenv только.
  • Ознакомьтесь с новым проектом Ian Bicking pyinstall.
  • Выполнение работы Ian Bicking работает. Это всегда добро.
  • При создании собственных пакетов используйте distutils/setuptools. Рассмотрите возможность использования paster create (см. http://pythonpaste.org), чтобы создать исходный макет каталога.
+0

На самом деле, я делаю еще один шаг: в моих сайтах-пакетах отсутствует даже setuptools, так как (a) мне он не нужен, (b) virtualenv включает в себя копию, содержащуюся в ней, которую он может использовать при создании каждой среды; (c) некоторые версии virtualenv вызывают проблемы для меня, если они доступны для всей системы. – 2009-04-08 15:50:13

5

В дополнение к PEP8 и easy_install вы должны проверить virtualenv. Virtualenv позволяет вам иметь несколько разных библиотек библиотеки python. На работе мы используем virtualenv с загрузочной средой, чтобы быстро настроить среду разработки/производства, где все мы находимся в версиях библиотеки sync w.r.t и т. Д. Мы обычно координируем обновление библиотек.

+1

Это звучит очень интересно, не могли бы вы объяснить это немного больше (и, возможно, разместить сценарий начальной загрузки virtualenv в качестве примера)? – 2008-10-06 17:44:34

2

Я держу весь источник для моих пакетов в ~/Пакеты /, а затем я стандартная установку с «установкой python2.5 .py install "на них. Это бросается в (для меня) /Library/Frameworks/Python/Versions/current/lib/python2.5/site-packages/. Для разработки моего собственного программного обеспечения у меня есть псевдонимы, настроенные для переключения между соединительными линиями/ветвями/1.0 и т. Д., Предварительно предваряя PYTHONPATH. (Мне нужно запустить «setup.py build_ext --inplace» в каждом из этих каталогов, прежде чем они будут импортированы должным образом.)

Стоит отметить, что Python2.6 имеет per-user site-packages directory, что может оказаться более удобным.

1

Мой совет - попытаться поместить все в каталог (-и) вашего сайта, если у вас нет веских оснований. И я стараюсь избегать easy_install, потому что я нахожу, что он имеет тенденцию крутить мой sys.path с местами яиц, но это только я. Некоторые люди считают это полезным.

Если у вас есть много программ, которые используют разные библиотеки, которые могут конфликтовать друг с другом, вы также можете проверить virtualenv.

5

Существует несколько семейств компонентов Python.

  1. Материал, который поставляется с Python. Это заботится о себе.

  2. Материал, который вы получили с помощью easy_install. Это также заботится о себе.

  3. Пакеты, которые вы должны были получить другим способом, либо как TARballs, так и SVN-кассы. Создайте папку Components. Сначала поставьте загрузки или SVN. Каждый раз. Устанавливается оттуда.

  4. Пакеты, которые вы написали, которые можно использовать повторно. У меня есть папка Projects с каждым проектом в этой папке. Если проект является многократно используемым, он имеет setup.py, и я фактически запускаю установку, как если бы я ее загрузил. У меня их мало, но несколько. Некоторые из них могут стать проектами с открытым исходным кодом.

  5. Окончательные приложения, которые вы пишете. У меня есть папка в Projects с каждым из этих приложений верхнего уровня. Обычно это большие, бессвязные вещи (например, сайты Django) и не имеют setup.py. Зачем? Они часто довольно сложны, и только несколько серверных установок управляются, и каждая из этих установок сервера уникальна. Они обычно полагаются на PYTHONPATH, чтобы идентифицировать их части.

Обратите внимание на общую тему. Или они являются компонентами, которые вы загрузили, или они являются проектами, над которыми вы работаете.

Кроме того, я сохраняю это отдельно (в некоторой степени) от клиента. У меня есть главный каталог клиентских папок, каждый из которых имеет проекты, а у каждого проекта есть Sales and Delivery. Не все проекты имеют как продажи, так и доставку.

1

Просто натыкался на этот сайт с другого StackOverflow вопрос: http://infinitemonkeycorps.net/docs/pph/ Это адреса больше, чем просто модуль размещения, но как только вы поместите его написать, как вы можете легко работать с документацией, тестирование и распределение.

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