Я спросил об этом на SO:https://stackoverflow.com/questions/19852911/lxml-3-1-2-and-lxml2-both-on-ubuntu/19856674#19856674
Но, возможно, это больше подходит для AskUbuntu. Так что вот оно снова, переформулированное.
На сайте lxml предполагается, что на Ubuntu можно использовать как lxml2, так и новейшую версию lxml:
Использование lxml с python-libxml2
Если вы хотите использовать lxml вместе с официальными привязками Python libxml2 (возможно, потому что одна из ваших зависимостей использует его), вы должны собрать lxml статически. В противном случае два пакета будут конфликтовать в местах, где библиотека libxml2 требует глобальной конфигурации, что может иметь любой эффект от исчезновения функциональности до сбоев в любом из них. Чтобы получить статическую сборку, либо передайте параметр --static-deps в скрипт setup.py, либо запустите pip с переменной среды STATIC_DEPS или STATICBUILD, установленной в значение true, т. е. STATIC_DEPS=true pip install lxml Переменная среды STATICBUILD обрабатывается эквивалентно переменной STATIC_DEPS, но используется также некоторыми другими пакетами расширений.
Я вообще не понимаю, как уживаются пакеты pip и пакеты ubuntu, поэтому не решаюсь запуститьSTATIC_DEPS=true pip install lxml. Не повредит ли это/не запутает ли мой установленный пакет lxml2?
Предложение на SO состояло в том, чтобы установить новый lxml в virtualenv. Это выглядит как лучший способ, но сайт lxml предполагает, что двойная установка тоже будет работать.
В общем: что произойдет, если я использую pip (чтобы получить более новую установку) для пакета, который уже установлен с помощью apt-get?
решение1
Ubuntu широко использует Python в своих дистрибутивах. По этой причине моя политика заключается в том, чтобы оставить версии Ubuntu, поставляемые в строгом порядке, и обновлять их только через менеджер обновлений или apt-get. Таким образом я избегаю риска дестабилизации части кода Ubuntu, которая зависит от конкретной версии пакета/модуля python.
Я выполняю всю свою работу по разработке в рабочих пространствах virtualenv и настраиваю свою командную строку и Eclipse для использования соответствующего рабочего пространства для любого приложения, над которым я работаю. Таким образом, я не вмешиваюсь в Ubuntu, а Ubuntu не вмешивается в меня.
Вполне вероятно, что двойная установка lxml "сработает", но установка, скорее всего, будет неустойчивой. Зачем рисковать?