Использование PIL в нескольких системах - PullRequest
2 голосов
/ 03 апреля 2012

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

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

Python 2.4 64 бит

Python 2.4 32 бит

Python 2.7 64 бит

Python 2.7 32 бит

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

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

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

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

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

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

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

0 голосов
/ 03 апреля 2012

Вы слышали о virtualenv? http://pypi.python.org/pypi/virtualenv

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

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

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

...