суббота, 14 июля 2012 г.

Про Python

Оригинальное сообщение:

Python 101: easy_install or how to create eggs

Posted by Mike under Packaging, Python ПЕРЕВОД ДЛЯ СЕБЯ(с помощью GOOGLE переводчик)

Сегодня мы собираемся взглянуть на спорный способ установки Python модулей и пакетов с использованием easy_install. Мы также узнаем, как создать свои собственные файлы вида *.egg. Чтобы у Вас все работало, Вы должны установить Setuptools(http://pypi.python.org/pypi/setuptools/). Этот пакет не поддерживает Python 3.x, так что если вам это нужно, смотрите (http://pypi.python.org/pypi/pip/ или http://www.blog.pythonlibrary.org/2012/07/12/python-101-easy_install-or-how-to-create-eggs/pypi.python.org/pypi/distribute). Там будет несколько статей о каждом из этих проектов в будущем. На данный момент, мы начнем с Setuptools и easy_install.

Почему спорный? Я не совсем уверен, но люди не довольны тем, как это было частично установки пакетов, поскольку он не ждать до окончания загрузки. Кроме того, я слышал, что автор был не очень заинтересован в обновлении, но не позволит никому, чтобы обновить его тоже. См. статью Зиад в конце этого поста.
 
Пакет Setuptools обеспечивает оригинальный метод потоковой загрузки и установки пакетов Python с PyPI и других источников с помощью командной строки. При установке Setuptools, устанавливается сценарий или программа с расширением EXE с названием easy_install. Ее вы можете вызвать из командной строки для установки и обновления пакетов. Она также предоставляет возможность создания файлы с расширением .egg. Давайте познакомимся с этой утилитой.

Использование утилиты easy_install для установки пакетов

 После того как вы установили пакет Setuptools​​, у вас на машине в переменной PATH указана папка с программой easy_install. Это означает, что вы в состоянии открыть терминал (Linux) или командную строку (Windows) и просто запустить easy_install. Вот пример вызова:

 easy_install sqlalchemy

Эта команда выведет на сайт с PyPI (очевидно, что доступ к Интернет у Вас есть) и попытаеться загрузить последнюю версию SQLAlchemy оттуда или из любого места, на которое указывает PyPI. Сценарий Easy_install установит его. Есть одна проблема. Программа easy_install может попытается начать установку до завершения загрузки пакета и это может привести к плохой установки. Есть замечательное свойство в easy_install, если вы создали свой файл setup.py правильно, то можно также загрузить и установить зависимые пакеты и их изменения. Так что при установке чего-то сложного, как TurboGears, вы увидите, что придется установить кучу пакетов. Это одна из причин, почему вы можете использовать virtualenv. В отдельной виртуальной папке вы можете убедиться, все ли пакеты установлены и как они работают. Если что-то не корректно, просто удалите папку virtualenv. В противном случае вам придется идти в вашу папку Python и копаться и попытаться "удалить" (т.е. удалить папки) самостоятельно. Другое дело, что easy_install при установке файла типа egg добавляет этот файл к install.pth на сайт-пакетов, поэтому, когда вы удаляете пакет, вам необходимо изменить файл install.pth. К счастью, вы можете использовать команду pip для удаления. Правда я слышал, смешанные отзывы о том, как хорошо она работает.

Вы можете установить пакет, передав URL непосредственно в easy_install. Еще одна забавная особенность состоит в том, что вы можете сказать easy_install, какую версию вы хотите, и он будет пытаться установить эту версию. Наконец, easy_install можно установить из исходных архивов или из egg. Полный список команд, вы можете прочитать в документации (http://peak.telecommunity.com/DevCenter/setuptools#command-reference)

Создание egg

Файл egg это формат для распространения Python пакетов. Это альтернатива для распространения исходников или исполняемых файлов Windows, но следует отметить, что для  Pythonфайл egg полностью платформа-независим. Мы рассмотрим, как создать свой собственный файл egg с помощью пакета, который мы создали в предыдущем уроке (http://www.blog.pythonlibrary.org/2012/07/08/python-201-creating-modules-and-packages/). Создайте новую папку и разместите папку mymath внутри. Затем создайте файл setup.py в родительском каталоге mymath со следующим содержимым:

from setuptools import setup, find_packages
 
setup(
    name = "mymath",
    version = "0.1",
    packages = find_packages()
    )


Обратите внимание, что вместо setup пакета distutils, мы используем setup пакета setuptools. Мы также используем функцию find_packages пакета Setuptools, которая будет автоматически искать любые пакеты в текущем каталоге и добавьте их в egg. Чтобы создать сам файл egg, вам необходимо выполнить следующие действия из командной строки:

python setup.py bdist_egg

Это породит много вывода, но когда команда закончится, вы увидите, что у вас есть три новые папки: build, dist и mymath.egg-info. В папке dist вы найдете наш файл egg, mymath-0.1-py2.6.egg. Обратите внимание, что на моей машине, по умолчанию Python 2,6 и мы создали egg для этой версии Python. Сам файл egg это архив типа zip. Если вы измените расширение на zip, вы можете заглянуть внутрь и увидеть, что у него есть две папки: mymath и EGG-INFO. Теперь вы можете указать easy_install на наш egg и пакет будет установлен.
 
Если вы хотите, вы также можете использовать easy_install для загрузки своих файлов egg или источник непосредственно в индекс Python Package (PyPI) с помощью следующих команд (скопированны из документов):

setup.py bdist_egg upload # create an egg and upload it
setup.py sdist upload # create a source distro and upload it
setup.py sdist bdist_egg upload # create and upload both

Чтение по поводу


 
--------
ОТ СЕБЯ
Хотели сделать просто и универсально!
ВОПРОС
А что если пакет уже установлен и версия его выше? 
 
 

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога