[SOLVED]How to Import Python library to clickable?

  • Hello, I'm new to ubuntu touch, and want to learn it as my Student project.
    So I installed Clickable and create example project like other newborn programmer do, "Hello World"
    Now it run smoothly with command clickable --desktop

    I want to improve it step by step. The first step that I want is import another python library into my .py
    but it got this

    can you tell me the proper way to import python module and include it when build the click file?
    thank you

  • Clickable generate project files like this:

    *- clickable.json
    *- hello_world.desktop.in
    *- CMakeLists.txt
    *- hello_world.apparmor
    *- manifest.json.in
     - logo.svg
    * - #this where you get the .click file
     - hello_world.gmnx.pot
     - CMakeLists.txt
     - #shared object for target platform (.so file). there is python and pyotherside in this folder
     - hello_world.py #the python logic is here
     - Main.qml

    it's different structure from the link that you shared

    I can't find script folder and get_libs.py

  • If the python library you are wanting to import is not already installed on Ubuntu Touch then you won't be able to easily use it in your app. Something that other people have done is include these dependencies in their apps, you might be able to check out this script for some info: https://github.com/timsueberkrueb/ubuntu-hangups-lib/blob/ce33e2773bb4d3144ef50f4b4291e7d34ff2cad3/get_libs.py

  • Thanks for your hint @bhdouglass
    So, if the library in the repo. we can use the get_libs.py

    But, if I need library that using C++ as their backend and bundling it with swig to create Python Library. How do I build this kind of library?
    is there any special tools to crosscompiling into Touch? or we can use any tools based on the Architecture ?

  • @GMNX if its something common, you could also find the compiled python modules packaged in the repository. If not or if you want to do it yourself, you may use any way to cross compile it, theres no unique special way afaik. But the clickable docker containers may be a good starting point as they already have the needed change root and compiler installed. Once you have them, you could use
    docker run -v ~/workdir:/root/workdir -it clickable/ubuntu-sdk:16.04-armhf bash
    to get a nice cross build environment for xenial for example. (The subdirectory workdir in your home directory would be mounted to /root/workdir inside the container for easy exchange of sources/buildartifacts or whatever...)
    With that, compiling classical (configure&make) c/c++ stuff is straight forward. Since I'm not so familiar with pythonic packaging and build process and hadn't time to figure out how it works I simply compiled the python modules I needed on the phone lastly... so thats ugly but indeed also possible and maybe the easiest way.

  • thank @hummlbach
    I'm already finish build the library straight to device.
    I connect it with clickable shell
    remount the root folder sudo mount -o remount,rw /
    Downloading the dependency using apt-get
    Download the source code
    Make and install it

    It build flawlessly, but sadly the library not working properly. It crash when I'm running it, and suddenly make the phone reboot itself.
    In which log I need to see what's happening before the system crash and rebooted?

    this what I got in host computer after the Phone crashed. No error message showing
    0_1531208470949_gmnx@Chaosmatic: ~_172.png

  • @gmnx are you sure the right compiler was used? What does file yourlib.so say? Ah... You've built it on the device right? Mhmm... now it gets tough... I'm afraid I can't help with that... Try using strace in front of the actual command it may give you a hint. Or perhaps you see something in dmesg... But theres no python yet(?)... Probably the debugger wont help here... But who knows, you could run it with gdb.

  • @hummlbach said in How to Import Python library to clickable?:
    The question about Python Library is SOLVED, with apt-get install on get_libs.py

    maybe I need to open new thread, about "How to check Crash Log in Ubuntu Touch?"
    "Create VoIP application with PJSIP in Ubuntu Touch"

    the Strace log didn't show me exactly what make the system reboot. this show me the technique to see what happen before system crashed
    since I'm using SSH to my phone, I follow the SSH step

    1. Log into phone using clickable shell
    2. Open another tab. Run clickable shell
    3. in tab 2 run tail -f /var/log/syslog to see system log in realtime
    4. Reproduce the crash in tab 1
    5. Watch any error messages in the tab 2

    Now I need to move to another thread to discuss it, and close this Thread as Solved

Log in to reply