Pull to refresh

Comments 11

Мне кажется, что появление Virtual Env, Pip, yolk вызвано в большой степени тем, что штатный питоновский Easy Install — сильно ограниченная вещь. Питону не хватает нормального менеджера пакетов, такого, как, например, Gem в Ruby, в котором можно и указать нужную версию библиотеки для использования, и обновить все библиотеки одной командой.
Ситуация с Gem тоже не однозначна, поскольку пакетный менеджер, имеющий собственные представления о зависимостях и путях инсталляции, неизбежно вступает в конфликт с пакетными менеджерами операционных систем (тем же apt). В последнее время появилось много аналогичной критики и в адрес setuptools, пытающихся вобрать в себя функционал инсталятора, пакетного менеджера и менеджера зависимостей. Плюс setuptools долгое время находится практически в заброшенном состоянии. Сейчас активно ведется переработка pypi.python.org/pypi/distribute (соответствующий фрок virtualenv pypi.python.org/pypi/virtualenv-distribute), но до завершения еще долго. Virutalenv, pip и yolk это классический unixway подхода к решению проблемы.
подсветку кода на питоне удобнее сделать с помощью pygments. а в requirements.txt запихнуть lxml который зависит от нескольких сишных библиотек — совсем не правильно.
хабра требует специфичное html форматирование с использованием тегов <font>, а pygments генерирует <style class=«el» >. в общем, сходу не разобрался. да и задача была другая. познакомившись с virtualenv и pip я потратил определенное время, в поисках удобного решения для быстрого создания изолированных окружений и кеширования загружаемых исходников. в итоге появился этот скрипт на shell.

что касается lxml. перепробовал несколько библиотек. wwwsearch.sourceforge.net/mechanize/ на использованном сервисе не распознает инпут «use_font», соответственно глючат и другие библиотеки, использующие mechanize (http://pypi.python.org/pypi/zc.testbrowser, например). у pypi.python.org/pypi/BeautifulSoup/ вроде отдельный парсер, но вылезла та же самая проблема. lxml.html оказалось первым, кто смог правильно распарсить страницу.
mechanize не парсер, а браузер. он работает поверх BeautifulSoup. я не говорил что lxml плохой, я сказал что пихать его в список установки для pip не самамя лучшая идея. кроме BeautifulSoup есть html5lib и elementtidy. скорее всего они справятся.
пихать его в список установки для pip не самамя лучшая идея

почему?
такой файл делают обычно для того, чтобы потом написать

./venv/bin/pip install -E venv -r ./build/pipreq.txt

и получить готовое к работе окружение, со всеми зависимостями для проекта. но есть библиотеки — mysqldb, psycopg2, PIL, lxml — которые для сборки требуют либо дополнительных библиотек, либо правильно настроенного окружения, либо правки исходников. поэтому обычно эти библиотеки ставятся не в virtualenv, а system-wide.
добавлю только что обычно в system-wide ставят пакеты, которые требуют gcc для установки из pypi, т.к. gcc есть не всегда.
По прежнему не понимаю. Но теперь уже две вещи. :)
1. Зачем указывать ключ -E venv? Мне попадалось много статей, где ключ указан. Но показалось, если пакет устанавливается в то же самое виртуальное окружение, где находится и pip, то ключ не обязателен. Необходимые настройки подключаются благодаря кастомному интерпретатору ./bin/python, который размещен там же.
2. Нужно было установить lxml system-wide от root, создав *.deb пакет, но зачем? Я считаю, что это сложнее и вносит неразбериху в apt. Поэтому для экспериментов использую виртуальные окружения. У меня еще не было проблем ни с lxml, ни с mysqldb, установленными таким способом. Где ждать неприятностей?
по первому пункту — да, ключ необязательный.
по второму — не везде debian и не у всех установлены libxml2 и libxslt
Sign up to leave a comment.

Articles

Change theme settings