2013-05-29 4 views
2

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

Python импортирует модули в следующем порядке (см М. Лутц, Learning Python)

  1. домашний каталог.
  2. PYTHONPATH справочники.
  3. Стандартные библиотечные каталоги.
  4. Содержимое любого *.pth файла.

Мое текущее решение установить мои пакеты в локальной (не в /usr/lib/python2.x/) site-packages каталог и добавьте *.pth файл в глобальной site-packages директории поэтому они загружаются по умолчанию. В каталоге разработки я просто изменяю PYTHONPATH для загрузки пакетов, с которыми я активно работаю с локальными изменениями.

Есть ли более стандартный способ обработки этой ситуации? Настройка virtualenv или какой-либо другой способ манипулирования нагрузкой на модуль?

+3

Virtualenv звучит как путь. – Max

+0

Я полагаю, что это не давно запущенная программа Python, или такая, которая порождает дочерние процессы Python, правильно? В противном случае кажется, что у вас возникнут проблемы с 'sys.modules' и' sys.path', которые не синхронизируются во время выполнения. –

ответ

1

Это только мое мнение, но в этом случае я бы, вероятно, использовал комбинацию virtualenvs и Makefiles/scripts. Я не делал этого для вашего конкретного случая использования, но я часто настраивал несколько виртуальных файлов для проекта, каждый из которых имел другую версию python. Затем я могу использовать Makefiles для запуска моего кода или тестов в одном или всех моих виртуальных серверах. Похоже, было бы не слишком сложно настроить make-файл, который позволит вам ввести make devel для запуска в разработке, а make production - для производственной среды.

В качестве альтернативы вы можете использовать ветви git для этого. Сохраните свои производственные сценарии на master и используйте ветви функций, чтобы изолировать и протестировать изменения, сохранив при этом ваши производственные сценарии только git checkout master.

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