[yocto] BKM for Importing Python Modules

Aaron_Wright at selinc.com Aaron_Wright at selinc.com
Thu Nov 30 08:42:35 PST 2017


"Burton, Ross" <ross.burton at intel.com> wrote on 11/30/2017 02:47:43 AM:
> Python functions in classes are executed by the Python that is 
> executing bitbake, which doesn't have access to the modules in the 
> native sysroot (and won't, as any compiled modules in there are 
> linked against the native python, not the host python).

So adding to sys.path works, but only accidentially?

    sys.path.append(
        d.getVar("STAGING_DIR_NATIVE", True) +
        d.getVar("PYTHON_SITEPACKAGES_DIR", True))
 
> You can solve this by either mandating python-cryptography on the 
> host, or writing a standalone script that is executed using 
> nativepython (which is the python built by python-native).

Not a terrible idea. I'll just have to pull lots of stuff out of d and 
pass them as arguments. Thanks. 

> Ross
> 
> On 30 November 2017 at 00:09, <Aaron_Wright at selinc.com> wrote:
> I have a python function that I've added to PACKAGEFUNCS in a 
> bbclass, and I want to use python-cryptography in that function. 
> However, sys.path doesn't seem setup to allow this import. I'm 
> curious to know the best known method for using python modules that 
> are outside of  <LAYER>/lib directory. Should I just append 
> STAGING_LIBDIR_NATIVE to sys.path? 
> 
> python do_stuff() { 
>     import cryptography # <-- this fails 
> 
>     # Other stuff... 
> } 
> 
> python () { 
>     if (not bb.data.inherits_class("native", d) and 
>         not bb.data.inherits_class("cross", d)): 
> 
>         d.appendVar("PACKAGEFUNCS", " do_stuff") 
>         d.appendVarFlag( 
>             "do_package", 
>             "depends", 
>             " python-cryptography-native:do_populate_sysroot") 
> }
> --
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20171130/4f133420/attachment.html>


More information about the yocto mailing list