У меня есть virtualenv с опцией --no-site-packages
. Я использую в нем scrapy. Scrapy использует libxml2 от import libxml2
. Как установить libxml2 в virtualenv, используя pip
или easy_install
?
Как установить libxml2 в virtualenv?
Ответы (6)
pip install ftp://xmlsoft.org/libxml2/python/libxml2 -python-2.6.9.tar.gz
sudo apt-get install libxml2 libxml2-dev
- person turingmachine; 30.07.2012
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) страницы
Перед установкой 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
libxslt-dev
вместо libxslt1-dev
Ubuntu 12.04 Python 2.7.3
- person anglinb; 19.12.2014
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
.
libxml2-dev
и libxslt-dev
, что является наиболее распространенной причиной проблем с установкой pip с lxml
.
- person not2qubit; 08.11.2018
В качестве альтернативы, если вы используете Windows, как я подозреваю из вашего вопроса, вам нужно либо получить двоичный файл libxml2 - на сайте scrapy есть ссылки, и по состоянию на ноябрь 2010 года была скомпилирована версия, которая будет работать со всем - - или получить текущую версию scrapy для магистрали/разработчика, которая работает с lxml2. Для virtualenv, поскольку я не уверен, как настроить дополнительный двоичный файл, последний подход может быть лучшим. Я принял последний подход, и до сих пор он работает безупречно для меня. Спасибо Пабло Хоффману, чрезвычайно полезному создателю Scrapy (когда я отправил вопрос, очень похожий на этот, в список рассылки Scrapy, он опубликовал это изменение в стволе почти на следующий день). Примечание: двоичный файл libxml2, который работал с python 2.7, в то время еще не был доступен.
Если вы установили python-libxml2 с помощью apt-get (или другого менеджера пакетов), вы можете получить к нему доступ из virtualenv с флагом --system-site-packages
.
При создании виртуального окружения просто укажите этот флаг, например:
virtualenv --system-site-packages env
Таким образом, ваш virtualenv унаследует пакет libxml2, который установлен в системе.