Таня Шлюссер - Автостопом по Python
- Название:Автостопом по Python
- Автор:
- Жанр:
- Издательство:Питер
- Год:2017
- Город:СПб.
- ISBN:978-5-496-03023-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Таня Шлюссер - Автостопом по Python краткое содержание
и содержит наработки многочисленных профессионалов и энтузиастов, знающих, что такое Python, и чего вы от него хотите. Проверенные методы и новейшие приемы, собранные в этой книге, помогут вам стать профессиональным Python-программистом и во всеоружии встретить наступающую эпоху Python 3.
Автостопом по Python - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Помимо вышеперечисленных вариантов, вы можете разместить личный сервер PyPI на Simple Storage Service от Amazon, Amazon S3 ( https://aws.amazon.com/s3/). Для этого вам понадобятся учетная запись для Amazon Web Service (AWS) и сегмент S3. Убедитесь, что вы следуете правилам именования сегмента ( http://bit.ly/rules-bucket-naming) (вы, конечно, сможете создать сегмент, который нарушает правила именования, но не получите к нему доступ). Для того чтобы использовать ваш сегмент, сначала создайте виртуальную среду на собственной машине и установите требуемые сторонние библиотеки с помощью PyPI или другого источника. Затем установите pip2pi:
$ pip install git+ https://github.com/wolever/pip2pi.git
Далее следуйте указаниям файла README для pip2pi, где вы сможете прочесть о командах pip2tgz и dir2pi. Вам нужно запустить либо эту команду:
$ pip2tgz packages/ YourPackage+
либо эти две:
$ pip2tgz packages/ — r requirements.txt
$ dir2pi packages/
Теперь загружайте свои файлы. Используйте клиент вроде Cyberduck ( https://duck.sh/), чтобы каталог с пакетами синхронизировать с вашим сегментом S3. Убедитесь, что вместе с новыми файлами и папками вы загружаете файл packages/simple/index.html.
По умолчанию при загрузке новых файлов в сегмент S3 им присваивается уровень доступа «только для пользователей». Если при попытке установить пакет вы получите код HTTP 403, удостоверьтесь, что правильно настроили уровень доступа: используйте веб-консоль от Amazon, чтобы установить уровень EVERYONE (разрешает чтение всех файлов). Установите ваш пакет с помощью следующей команды:
$ pip install \
··-index-url= http://your-s3-bucket/packages/simple/ \
··YourPackage+
Существует возможность получать код непосредственно из системы контроля версий с помощью инструмента pip (для этого следуйте инструкциям по адресу http://bit.ly/vcs-support). Этот способ — альтернатива размещению личного PyPI. Рассмотрим пример команды, использующей pip для получения проекта с GitHub:
$ pip install git+git://git.myproject.org/MyProject#egg=MyProject
В этой команде egg нужно заменить — он носит имя каталога вашего проекта, который вы хотите установить.
Замораживаем код
Фраза «заморозить код» означает «создать отдельный исполняемый пакет, который можно распространять конечным пользователям, на чьих компьютерах не установлен Python». Распространяемый файл или пакет содержит как код приложения, так и интерпретатор Python.
Приложения вроде Dropbox ( https://www.dropbox.com/en/help/65), Eve Online ( http://www.eveonline.com/), Civilization IV ( https://www.civilization.com/en/games/civilization-iv/) и клиента BitTorrent ( http://www.bittorrent.com/) (в основном они написаны на Python) делают это.
Преимущество распространения кода таким способом в том, что ваше приложение будет работать независимо от того, установлена ли на компьютере пользователя требуемая (или хоть какая-нибудь) версия Python. В Windows и для многих дистрибутивов Linux и OS X корректная версия Python не установлена заранее. Помимо этого, программное обеспечение конечного пользователя всегда должно иметь исполняемый формат. Файлы с расширением. py предназначены для программных инженеров и системных администраторов.
Недостаток у заморозки один — она увеличивает размер вашего дистрибутива на 2–12 Мбайт. Кроме того, вам придется отправлять обновленные версии вашего приложения, когда будут выходить обновления безопасности к Python.
Вы должны проверять лицензии для каждого пакета, который используете, на всех уровнях дерева зависимостей. Но мы особенно хотели бы обратить ваше внимание на Windows, поскольку всем решениям для этой операционной системы требуются динамически подключаемые библиотеки (dynamically linked libraries, DLL), написанные на MS Visual C++ и установленные на целевой машине. У вас может не быть разрешения распространять некоторые библиотеки, поэтому вы должны проверять свои возможности перед распространением приложения (см. сообщение Microsoft ( http://bit.ly/visual-cplusplus) о файлах Visual C++ для получения более подробной информации). Опционально вы можете использовать компилятор MinGW ( https://sourceforge.net/projects/mingw/) (расшифровывается как Minimalist GNU for Windows), но, поскольку это проект GNU, лицензия может быть ограничительной (всегда должна быть открытой и бесплатной).
Кроме того, компиляторы MinGW и Visual C++ не полностью похожи друг на друга, поэтому вы должны проверить, работают ли ваши юнит-тесты так, как вы того ожидаете, после использования другого компилятора. Мы начинаем отходить от основной темы, поэтому проигнорируйте все, что здесь написано, если вы нечасто компилируете код C для Windows, но, например, все еще могут возникнуть кое-какие проблемы при использовании MinGW и NumPy ( https://github.com/numpy/numpy/issues/5479). В «Википедии» для NumPy есть статья ( https://github.com/numpy/numpy/wiki/Mingw-static-toolchain), в которой рекомендуется применять сборки MinGW со статическими наборами инструментов.
Мы сравним популярные инструменты для заморозки в табл. 6.1. Все они взаимодействуют со стандартной библиотекой Python. Они не могут выполнять кросс-платформенную заморозку [79] Заморозка кода Python на Linux с его преобразованием для выполнения в ОС Windows применялась в PyInstaller 1.4, но от этой возможности отказались в версии 1.5 ( https://github.com/pyinstaller/pyinstaller/wiki/FAQ#features ), поскольку она работала только для программ, написанных на чистом Python (то есть не для графических приложений).
, поэтому вы должны проводить сборки на целевых платформах.
Инструменты перечислены в том порядке, в каком описаны в этом разделе. PyInstaller и cx_Freeze могут использоваться на всех платформах, py2app работает только для OS X, py2exe — только для Windows, а bbFreeze может работать на UNIX-подобных системах и для Windows, но не для OS X (он еще не портирован на Python 3). Он может генерировать архивы egg, если вам нужна такая функциональность для вашей легаси-системы.
\ | pyInstaller | cx_Freeze | py2app | py2exe | bbFreeze |
---|---|---|---|---|---|
Python 3 | Да | Да | Да | Да | — |
Лицензия | Модифицированная GPL | Модифицированная PSF | MIT | MIT | Zlib |
Windows | Да | Да | — | — | Да |
Linux | Да | Да | — | — | Да |
OS X | Да | Да | Да | — | — |
Eggs | Да | Да | Да | — | Да |
Поддержка pkg_resources* | — | — | Да | — | Да |
Режим одного файла** | Да | — | — | Да | — |
* pkg_resources ( https://pythonhosted.org/setuptools/pkg_resources.html) — это отдельный модуль, поставляющийся с Setuptools, который может использоваться для автоматического поиска зависимостей. При заморозке кода возникают трудности, поскольку сложно вручную находить динамически загруженные зависимости статического кода. PyInstaller, например, только говорит о том, что все будет хорошо, когда анализ проводится для egg-архива.
Читать дальшеИнтервал:
Закладка: