LINUX.ORG.RU

No module named libxml2

 , , , ,


0

1

Здравствуйте!

В Debian 7 создал виртуальное окружение для проекта на Python 2.7

mkvirtualenv my_project --python=/usr/bin/python2.7

Поставил все зависимости, lxml собирался из исходников, при чём ошибок не выдавал. libxml2-dev и libxslt1-dev в системе присутствуют со всеми зависимостями.

При запуске проекта на одной машине всё нормально, а на другой, с (вроде бы) таким же набором ПО, Django выдаёт ошибку: «No module named libxml2».

Какой libxml2? Зачем он там вообще? Почему эта ошибка могла появиться? Что делать?

Ответы на эти и другие волнующие вопросы об lxml и libxml2 ожидаются в этом треде.

libxml это библиотека для парсера xml. Установи её в виртуальное окружение (pip install libxml2). Можно попробовать установить в систему sudo apt-get install libxml2

CrazyAlex25 ★★ ()

Какой libxml2?

гномский

Зачем он там вообще?

затем же, зачем и libc

Почему эта ошибка могла появиться?

потому что в системе не установлен libxml2

Что делать?

установить

$ aptitude search 'libxml2 ~i' # на системе, где завелось
# aptitude install нужные libxml пакеты
MyTrooName ★★★★★ ()
Ответ на: комментарий от CrazyAlex25

Дело в том, что http://pypi.python.org/ ничего не знает о libxml2. Эта библиотека - системная. При установке libxml2-dev и libxslt1-dev обычные пакеты, которые libxml2 и libxslt1, ставятся как зависимости. При этом lxml собирается, но выдает такую ошибку.

dunmaksim ()
Ответ на: комментарий от dunmaksim

Дело в том, что http://pypi.python.org/ ничего не знает о libxml2

 % pip search libxml
lxml                      - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
libxml2dom                - PyXML-style API for the libxml2 Python bindings
plone.recipe.lxml         - Recipe that builds lxml and dependencies (libxslt, libxml2).
libxml2-python            - libxml2 and libxslt package
webio                     - Make sure to have libxml2 devel for lxml  sudo yum install libxml2-devel libxslt-devel  From root:     sudo python setup.py install
                            --record setup/setup.txt      To uninstall:     sudo cat setup/setup.txt | xargs rm -rf
x3al ★★★★★ ()
Последнее исправление: x3al (всего исправлений: 2)
Ответ на: комментарий от CrazyAlex25

Написал

pip install lxml
Он собрался, поставился,
pip freeze
говорит, что есть такой пакет. Перезапустил через
supervisorctl restart all
Продолжаю наблюдать ошибку и думать.

dunmaksim ()

Почему эта ошибка могла появиться? Что делать?

А ты уверен, что у тебя с virtualenv всё нормально, и джанго именно в нём запускается?

risenshnobel ★★★ ()
Ответ на: комментарий от risenshnobel

Абсолютно. В конфигах supervisor'а чётко прописано, в каком окружении и какой файл запускать. Кроме того, пакет lxml для Python не установлен глобально.

dunmaksim ()
Ответ на: комментарий от dunmaksim

А если внутри env'а вызвать питоновскую консоль и там попробовать import lxml? Та же ошибка?

risenshnobel ★★★ ()

Итак, решение было найдено, но оно крайне нетривиальное и является по сути костылём. Я поставил в систему пакет python-lxml, после чего пересоздал виртуальное окружение с ключом --system-site-packages. После этого lxml при установке через pip всё-таки заработал и перестал выдавать эту странную ошибку, но истинная причина мне до сих пор не ясна. Допускаю, что проблема в реализации виртуальной машины VMWare. Повлиять на ситуацию и установить систему на физическую машину я не могу, поэтому придётся довольствоваться тем, что есть.

dunmaksim ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.