← Back to team overview

ubuntu-phone team mailing list archive

Re: Packaging Python app as click package

 

There is pyotherside. It's a library which enables QML to use python stuff. But i never really figured out how this works.

http://pyotherside.readthedocs.org/en/latest/


Am 10.01.2016 um 20:40 schrieb Neil McPhail:
On Sat, January 9, 2016 2:29 pm, Sam Bull wrote:
I'm trying to package a Python app as a click package, what do I need
to make this work?

Is it just a case of including the interpreter and libraries as part of
the package, and setting my .desktop file to 'Exec=./python myapp.py'
(assuming the Python binary to be in the root of the click package)?

Also, what's the easiest way to get hold of the armhf binaries? I've
been testing by just copying the files out of /usr/bin/python3 and
/usr/lib/python3/ but obviously the binaries are amd64 on my laptop, so
how would I get these files for armhf? Maybe copy them out of a VM?

And, is the installed app location read-only? Specifically, is it
better for me to include the __pycache__ in the package for
performance, or will it be able to create it's own when it is run?
(This saves about 6-7% of the package size)--

Hi Sam

I don't know what is best practice, but I've packaged GemRB, which is a C
and C++ program which calls python modules. I've taken the naive approach
and dumped an almost entire python runtime into a subdirectory of the
click and used a setup script ("run.sh") to set some environment variables
to point to the runtime. If I knew exactly what python libraries were
going to be called, I could probably trim the directory size
substantially. I would have to rethink the structure if I was going to
reformulate the .click as a "fat" package with AMD64 and i386 as well as
the ARM binaries.

To obtain the python files, I set up a full ARM chroot environment as per
https://adoptingubuntu.wordpress.com/2015/07/10/creating-an-emulated-armhf-chroot-for-development/
and simply copied the python runtime files across. I've found it is quite
difficult to install all the python runtime in a traditional click chroot
as there are a lot of dependency issues between the amrhf and the amd64
packages, so a full chroot (as linked) has been easier. I'm sure there
will be some way to trick apt-get into downloading the armhf files without
going to such lengths, but I have the chroot anyway so it is a shame not
to use it.

My app is called "bg1" and is up on the store. Feel free to have a poke
around: a click package can be expanded by running "dpkg-deb --extract
packagename.click .". If you find a better way to package python, let me
know. I'm sure my method could be improved.

Good luck

NMP





Follow ups

References