"Burton, Ross" <ross.bur...@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_wri...@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") > } > --
-- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto