2012-04-02 2 views
2

ищет советы и рекомендации по лучшей практике со следующей ситуацией. У меня есть приложение python, которое запускается из источника и включает все зависимости. При использовании PIL возникают некоторые проблемы. Различные версии python нуждаются в разных источниках PIL, а для 64-битной и 32-разрядной версий нужна другая версия.Использование PIL на нескольких системах

Мы решили, что мы хотим поддержать:

Python 2.4 64 Бит

Python 2.4 32 битную

Python 2.7 64 битную

Python 2.7 32 бит

Я буду должны найти необходимые исходные пакеты и включить их все. Вопрос в том, что это лучший способ их импортировать? Я проверяю версию python и версию ОС и импортирую различные версии PIL на основе этого (можете ли вы, если импортируете материал?) Или я могу импортировать один раз для всех?

Надеюсь, что все имеет смысл. Thanks

ответ

2

Я собираюсь принять противоположное направление ответа @ alan и не рекомендую вам распространять ваши 4 жестко закодированные среды.

Если вы распространяете исходный код напрямую, вы не должны включать в себя заранее созданные зависимости. Создайте setup.py, чтобы загрузить и установить зависимости. Или рассмотрите возможность упаковки вашего приложения в автономный исполняемый файл

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

Вы также можете взглянуть на py2exe, py2app и pyinstaller, если хотите идти по пути создания самообслуживаемых пакетов для разных систем, которые содержат всю их среду.

0

Слышали ли вы о virtualenv? http://pypi.python.org/pypi/virtualenv

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

Посмотрите и посмотрите, не делает ли оно того, что вам нужно, хотя я считаю, что вам понадобится два разных блока (или виртуальных машин) для разделения 32- и 64-разрядных сред.

Во всяком случае, как только вы настроите свои четыре среды, вы просто активируете среду, а оператор import PIL в коде Python, запущенный в этой среде, получит соответствующую библиотеку.

+0

Понятно, что я недостаточно внимательно изучил ваш вопрос. @jdi имеет лучший ответ ниже. virtualenv не поможет вам распространять приложение другим пользователям. Это та часть, которую я выделил. – alan

+1

Я все еще считаю, что virtualenv - хорошая идея для конечной стороны. В пакете может быть файл требований pip.txt и некоторые простые инструкции для быстрого создания virtualenv, активации его и 'pip install -r requirements.txt' для создания и установки зависимостей (PIL) – jdi