Простое развертывание Python и приложения в одном комплекте, для Linux - PullRequest
4 голосов
/ 15 июля 2011

Я разрабатываю довольно большое приложение на python на стороне сервера, со всеми подключениями к базе данных, извлечением файлов, анализом, вызовами командной строки.

Это становится кошмаром для развертывания, так как я использовал много сторонних модулей вне стандартного pythonLib.И я потерял их след.В частности, Differnt Linux OS использует их разные версии, поэтому устанавливать их с помощью диспетчера пакетов ОС уже нецелесообразно.

Я хочу развернуть их во всех пакетах, включая текущую версию Python, которую я использую (Большинство ОС все еще поставляетсяс Python 2.5,6 я использую 2.7 и 2.7 специфические функции.).

Более того, я должен научить клиента, как развертывать, чтобы они могли тестировать на других серверах.Но они не являются экспертами Linux.Я должен упростить это, используя один скрипт или скопировав и вставив.

Существует Portablepython для Windows, но для Linux ничего нет.И я никогда не использовал python Packaging, поскольку я обычно работаю на сервере, на котором я только размещаю.

Пожалуйста, расскажите мне о доступных вариантах упаковки и развертывания для python, который включает в себя все установленные модули python и сам python.

Ответы [ 4 ]

5 голосов
/ 15 июля 2011

Большинство пакетов Python можно развернуть, создав каталог lib или аналогичный в вашем развертывании и добавив его в sys.path в Python или PYTHONPATH снаружи, затем скопировав каталог пакета (обычно внутри каталог, который вы распаковали) в этот каталог. Это позволяет хранить пакет с развернутым кодом, например, в репозитории Mercurial.

Развертывание самого Python будет немного сложнее, но если вы можете контролировать, где он установлен (например, /usr/local или /opt), то это всего лишь вопрос ./configure --prefix=..., make и sudo make install. Затем вы можете указать свои скрипты на этот Python, начав их со строки вроде #!/usr/local/bin/python, если скрипт помечен как исполняемый.

Например, если вы развертываете код, для которого требуется docutils, вы должны сделать что-то вроде:

cd projectDir
mkdir -p lib
tar xzvf ~/Downloads/docutils-0.8.tgz
mv docutils-0.8/docutils lib
rm -r docutils-0.8

Тогда модуль Python в этом каталоге просто добавит следующее:

#!/usr/local/bin/python

import os
import sys
sys.path(os.path.join(os.path.dirname(sys.argv[0]), "lib"))
import docutils
1 голос
/ 15 июля 2011

Это широкая тема, но вот несколько указателей.

Для вашего проекта Python и его зависимостей посмотрите virtualenv и pip .

Virtualenv предоставляет изолированную среду Python на вашей целевой платформе, в которую вы затем можете установить свой проект.

Pip - это инструмент для установки пакетов, который загрузит и установит ваш пакет и его зависимости.Взгляните на pip freeze, чтобы обеспечить быстрый способ определения списка зависимостей, которые вы в настоящее время установили в своей среде разработки.

Если вы хотите узнать больше о распространении пакетов в Python, вам также следует прочитатьо , распространяют проект.

Для не-python-компонентов системы, включая установку самого python, можно использовать инструмент автоматизации системы, такой как Puppet , но он звучиткак будто это может быть излишним для ваших нужд.Если вы ищете одношаговую установку, вам, вероятно, стоит подумать о создании пакета для менеджера пакетов вашей целевой системы .

0 голосов
/ 15 июля 2011

Я хочу развернуть их во всех одном модуле, включая текущую версию Python, которую я использую (Большинство ОС все еще поставляется с Python 2.5,6, я использую специфические функции 2.7 и 2.7.).

Может быть VirtualEnv - это то, что тебе нужно для этого?

0 голосов
/ 15 июля 2011

Нет причин для супер простой настройки на стороне сервера.

Не тратьте время на это.

Сколько будет происходить установка сервера? Не много.

Системные администраторы ожидают определенного уровня сложности в серверных приложениях.

У вас есть список сторонних пакетов; они следуют этому списку и проводят установку.

Затем - после того, как они сделали все установки - они устанавливают и настраивают ваш пакет.

Это то, чего ожидают многие системные администраторы, работающие на серверах. Они ожидают зависимости и ожидают многоэтапной установки.

...