Как установить libxml2 в virtualenv?

У меня есть virtualenv с опцией --no-site-packages. Я использую в нем scrapy. Scrapy использует libxml2 от import libxml2. Как установить libxml2 в virtualenv, используя pip или easy_install?


person Tomasz Wysocki    schedule 04.10.2010    source источник


Ответы (6)


pip install ftp://xmlsoft.org/libxml2/python/libxml2 -python-2.6.9.tar.gz

person turingmachine    schedule 18.05.2011
comment
для последней версии xmlsoft.org/libxml2/python/libxml2-python -2.6.21.tar.gz - person MechanisM; 04.06.2012
comment
Я получил эту ошибку: не удалось найти заголовки для libxml2: обновление include_dir - person Danfi; 20.07.2012
comment
@Danfi: Вам все еще нужно установить libxml2 и его заголовки: sudo apt-get install libxml2 libxml2-dev - person turingmachine; 30.07.2012
comment
Кто-нибудь знает, как я могу разместить эту ссылку в моих требованиях.txt? Я получаю сообщение об ошибке при выполнении -e ftp://... - person JonMorehouse; 09.11.2013
comment
pip использует запросы, которые не поддерживают FTP. stackoverflow.com/questions/15115328/ - используйте этот URL-адрес: xmlsoft.org/sources/python/libxml2- python-2.6.21.tar.gz - person patroqueeet; 08.07.2014
comment
И в этом пути есть только версии до 2.6.21, с 2015 года, где libxml2 сейчас на 2.9.7 и естественно изменился API поэтому компиляция не удалась. - person Patrick Mevzek; 19.05.2018

libxml2 — это библиотека C, а не пакет Python, поэтому вы не можете использовать Pip для ее установки. Обычно он уже установлен почти в каждом дистрибутиве Linux. Если вам нужно установить его, это просто

sudo apt-get install libxml2

Если по какой-то причине вам абсолютно необходима локальная установка, вам нужно будет взять и установить пакет .deb или RPM. За исключением того, что вы можете скачать исходный код и собрать его.

Если вы согласны с использованием общей копии, но не хотите иметь /usr/local/ в своем пути, просто создайте символическую ссылку в своем виртуальном окружении.

Дополнительную информацию (чем вы, вероятно, хотели) можно найти на странице http://xmlsoft.org/.

Scrapy перечисляет это в своих требованиях:

  • Python 2.5 или выше
  • Витой 2.5.0 или выше
  • libxml2 2.6.28 или выше (включая привязки Python)
  • pyopenssl — только если вы хотите сканировать защищенные (HTTPS) страницы
person zenWeasel    schedule 15.10.2010
comment
Почти уверен, что ОП имел в виду пакет Python с именем libxml2, т.е. импортировать libxml2, а не библиотеку C (которую обертывает пакет python). - person Jason Antman; 18.12.2013

Перед установкой lxml (в Debian):

apt-get install libxml2-dev libxslt1-dev pythonX.X-dev -y

Где pythonX.X — это python2.7 или python2.6 или другая игольная версия Python.

После установки системных пакетов:

workon %environment_name%
pip install lxml --upgrade
person Dunaevsky Maxim    schedule 28.08.2014
comment
Мне пришлось использовать libxslt-dev вместо libxslt1-dev Ubuntu 12.04 Python 2.7.3 - person anglinb; 19.12.2014
comment
Да, это верно и для Cygwin (Fedora), только заголовки разработки называются libxml2-devel и libxslt-devel. И да, используйте вместо этого lxml. - person not2qubit; 08.11.2018

Я только что пришел к этой проблеме с ядром Ubuntu 14.04.

Я уже установил lxml с помощью pip.

Когда я пытаюсь pip install lxml --upgrade внутри virtualenv, это всегда давало мне

x86_64-gnu-gcc выход 1

Я решил это, используя sudo apt-get install libssl-dev.

person shwsun    schedule 05.01.2016
comment
Причина, по которой это сработало, вероятно, заключается в том, что эта операция также установила библиотеки разработки libxml2-dev и libxslt-dev, что является наиболее распространенной причиной проблем с установкой pip с lxml. - person not2qubit; 08.11.2018

В качестве альтернативы, если вы используете Windows, как я подозреваю из вашего вопроса, вам нужно либо получить двоичный файл libxml2 - на сайте scrapy есть ссылки, и по состоянию на ноябрь 2010 года была скомпилирована версия, которая будет работать со всем - - или получить текущую версию scrapy для магистрали/разработчика, которая работает с lxml2. Для virtualenv, поскольку я не уверен, как настроить дополнительный двоичный файл, последний подход может быть лучшим. Я принял последний подход, и до сих пор он работает безупречно для меня. Спасибо Пабло Хоффману, чрезвычайно полезному создателю Scrapy (когда я отправил вопрос, очень похожий на этот, в список рассылки Scrapy, он опубликовал это изменение в стволе почти на следующий день). Примечание: двоичный файл libxml2, который работал с python 2.7, в то время еще не был доступен.

person Profane    schedule 04.11.2010

Если вы установили python-libxml2 с помощью apt-get (или другого менеджера пакетов), вы можете получить к нему доступ из virtualenv с флагом --system-site-packages.

При создании виртуального окружения просто укажите этот флаг, например:

virtualenv --system-site-packages env

Таким образом, ваш virtualenv унаследует пакет libxml2, который установлен в системе.

person ApriOri    schedule 04.04.2018