# libxslt and libxml with Python

Source: https://forum.modalai.com/topic/205/libxslt-and-libxml-with-python
Category: General Questions (https://forum.modalai.com/category/2/general-questions)
Posted: 2021-04-21 22:36:41 UTC by MattO
Replies: 12 · Views: 3226

## MattO · 2021-04-21 22:36:41 UTC

Hello,
I got voxl-python_3.6.9 built and installed on voxl, and am working through pip installing some packages, pymavlink in particular. I see that a couple of libxml packages exist on VOXL, however there are none for libxslt, and opkg can't seem to find an xslt package (I've tried a bunch of combinations like libxslt, libxslt-dev, libxslt-devel, libxslt1, etc.). I also tried installing something like python3-lxml per google searches, but to no avail. 

Is there a way around this, or a way I can point opkg to another repository that has the libxslt package? Thanks.

## Reply by MattO · 2021-04-21 22:38:42 UTC

For reference, here is the output. 

```
yocto:/# pip3 install pymavlink
Collecting pymavlink
  Using cached https://files.pythonhosted.org/packages/5f/4e/985824701e53ec259d3898eb71c4d9211e643dd986ce74b8c71a32d6437c/pymavlink-2.4.15.tar.gz
Collecting future (from pymavlink)
  Using cached https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9/future-0.18.2.tar.gz
Collecting lxml (from pymavlink)
  Using cached https://files.pythonhosted.org/packages/e5/21/a2e4517e3d216f0051687eea3d3317557bde68736f038a3b105ac3809247/lxml-4.6.3.tar.gz
    Complete output from command python setup.py egg_info:
    Building lxml version 4.6.3.
    Building without Cython.
    Error: Please make sure the libxml2 and libxslt development packages are installed.
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /var/volatile/tmp/pip-install-loh5dpgv/lxml/
You are using pip version 18.1, however version 21.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

```

## Reply by Eric Katzfey (ModalAI staff) · 2021-04-22 16:37:25 UTC

If you can use a Docker container for you application then you can run Ubuntu or Alpine and get access to a lot of packages. If you run on target without a container then you are much more limited in what you can do to resolve dependencies. opkg isn't like apt-get where you can point to large package repositories to find your missing dependencies. In this case you will likely have to build and install libxslt yourself.

## Reply by SHofmeester · 2022-04-05 13:11:27 UTC

Hi @Eric-Katzfey,
I have the same problem as MattO.
How can I build and install libxslt myself?
Do I have to make a .ipk file of the libxslt repository, push it to the Voxl and then "opkg install"?
How can I make a .ipk file that can be installed?
Or is there another way to install it?

Thanks in advance

## Reply by Eric Katzfey (ModalAI staff) · 2022-04-05 14:48:10 UTC (in reply to SHofmeester)

@SHofmeester You can build it in the voxl-emulator and then make an ipk package that you can install on target with opkg.

## Reply by SHofmeester · 2022-04-06 14:32:26 UTC

Hi @Eric-Katzfey,

Thank you for your reply.
I was able to build the libxslt library with voxl-emulator, with ./autogen.sh, make and ./configure. And I was also able to make an .ipk with control.tar.gz., data.tar.gz and debian-binary, with a online tutorial.
But when I push it to the Voxl and try to opkg install it, it says: "unrecognized archive format" and "failed to extract control.tar.gz".

I tried to copy the file structure and contents of the control file from the Voxl-libraries. But I don't understand what should be in the data directory, what shouldn't and what the format should be. 

How can I make an .ipk file with the right format to install libxslt with opkg?

## Reply by Eric Katzfey (ModalAI staff) · 2022-04-06 15:02:49 UTC (in reply to SHofmeester)

@SHofmeester What do you have for the ```Architecture:``` in the control file for the package? If you use ```all``` it should work.

## Reply by SHofmeester · 2022-04-11 14:02:45 UTC

@Eric-Katzfey 
Thank you, I was able to opkg install libslt-dev on VOXL (I also had to use "ar x" to create the .ipk-file, like you do in your make_package.sh, instead of "tar", like on online tutorials)

Another dependency of lxml is python3-dev. How can I opkg install that on the VOXL? Because I can't find a repository to put in the data-folder of the .ipk-file.

## Reply by tom (ModalAI staff) · 2022-04-11 16:48:53 UTC

@SHofmeester This repo hasn't been touched in quite a while so I can't guarantee that it will work perfectly, but this was used to build / install Python3 on VOXL in the past: https://gitlab.com/voxl-public/support/voxl-python-3.6.9

## Reply by SHofmeester · 2022-04-13 11:55:23 UTC

Hi @tom, thank you for your reply, but that isn't exactly what I meant.
I built/installed python3 on the VOXL and it works well.
But for pymavlink I need: python3-dev (and also libxslt-dev and libxml2-dev, but I built/installed those myself on the VOXL). 
For reference (below "On Linux"): https://github.com/ArduPilot/pymavlink/blob/master/README.md 

Is there a python3-dev repository I can use for the data of the .ipk-file?
Do I need to add that package to the image and then reflash it (https://docs.modalai.com/voxl-system-image/)? If so, what are the main steps to do that?
Isn't there a way to use apt-get?

## Reply by Chad Sweet (ModalAI staff) · 2022-04-13 14:34:44 UTC

We don't have much familiarity with supporting Python. It might make most sense to use [Ubuntu on Docker](https://docs.modalai.com/docker-on-voxl/) . That way you can apt-get the packages you need. You can access libmodal_pipe as well from that Docker.

## Reply by SHofmeester · 2022-04-19 14:19:01 UTC

Hi @Chad-Sweet, thank you, I was able to install pymavlink, and all the dependencies using apt-get, on the docker on the VOXL. 

How can I access libmodal_pipe from the docker?
Can I access it using UDP (that is what pymavlink uses)?
And how can I get the data from the flight controller, for example if it is armed or not?

Then I can use pymavlink to get the data from the flight controller inside the docker and then send it outside the docker, so I can use all the VOXL libraries and functionalities.

## Reply by Eric Katzfey (ModalAI staff) · 2022-04-19 15:56:10 UTC (in reply to SHofmeester)

@SHofmeester There is some introductory material about libmodal_pipe in our documentation here: https://docs.modalai.com/voxl-sdk/
