Не мога да инсталирам lxml версия 3.3.5 в ubuntu

Използвам пакет openpyxl python в моето приложение. Получавам следното съобщение, когато използвам същото.

/usr/local/lib/python2.7/dist-packages/openpyxl/init.py:31: Потребителско предупреждение: Инсталираната версия на lxml е твърде стара, за да се използва с openpyxl

warnings.warn("Инсталираната версия на lxml е твърде стара, за да се използва с openpyxl")

Openpyxl изисква lxml версия 3.2.5 или по-нова, а версията на моята машина е 3.2.0. Когато се опитвам да надстроя lxml до най-новата версия, т.е. 3.3.5, се прекъсва със следното съобщение.

i686-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security build/temp.linux-i686-2.7/src/lxml/lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm -o build/lib.linux-i686-2.7/lxml/etree.so

/usr/bin/ld: cannot find -lz

collect2: error: ld returned 1 exit status

error: command 'i686-linux-gnu-gcc' failed with exit status 1

----------------------------------------

  Rolling back uninstall of lxml

  Replacing /usr/lib/python2.7/dist-packages/lxml
  Replacing /usr/lib/python2.7/dist-packages/lxml-3.2.0.egg-info
Cleaning up...

  Removing temporary dir /tmp/pip_build_root...
Command /usr/bin/python -c "import setuptools;__file__='/tmp/pip_build_root/lxml/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ov0PUy-record/install-record.txt --single-version-externally-managed failed with error code 1 in /tmp/pip_build_root/lxml

Имам нужда от помощ за разрешаване на проблема.

PS:- Вече инсталирах зависими от lxml пакети python-dev, libxml2-dev и libxslt1-dev в моята машина.


person shaunthomas999    schedule 09.05.2014    source източник
comment
Забележете, че lxml всъщност се изисква само за тестове, но мисля, че трябва да проверим дали се справя по-добре или не. Бих посъветвал винаги да използвате virtualenv, за да решите дали искате lxml или не. В момента изглежда, че lxml е по-бавен за четене на файлове.   -  person Charlie Clark    schedule 12.05.2014


Отговори (2)


Мисля, че това, което ви липсва, е zlib1g-dev.

sudo apt-get install zlib1g-dev

Изпълнението на горната команда ще реши проблема.

person Midnighter    schedule 09.05.2014
comment
Благодаря за отговора Вашата препоръка реши проблема. - person shaunthomas999; 10.05.2014

В Ubuntu (и други производни на Debian), преди да изградите някакъв софтуер, уверете се, че неговите зависимости за компилация са инсталирани. Използвайки вашия пример, стартирайте това:

sudo apt-get build-dep python-lxml

Това вероятно ще изисква цял куп пакети, един от които е zlib1g-dev, както беше споменато.

person tshepang    schedule 09.05.2014