1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK 2 3Using a Python Development Shell 4******************************** 5 6Similar to working within a development shell as described in the 7previous section, you can also spawn and work within an interactive 8Python development shell. When debugging certain commands or even when 9just editing packages, ``pydevshell`` can be a useful tool. When you 10invoke the ``pydevshell`` task, all tasks up to and including 11:ref:`ref-tasks-patch` are run for the 12specified target. Then a new terminal is opened. Additionally, key 13Python objects and code are available in the same way they are to 14BitBake tasks, in particular, the data store 'd'. So, commands such as 15the following are useful when exploring the data store and running 16functions:: 17 18 pydevshell> d.getVar("STAGING_DIR") 19 '/media/build1/poky/build/tmp/sysroots' 20 pydevshell> d.getVar("STAGING_DIR", False) 21 '${TMPDIR}/sysroots' 22 pydevshell> d.setVar("FOO", "bar") 23 pydevshell> d.getVar("FOO") 24 'bar' 25 pydevshell> d.delVar("FOO") 26 pydevshell> d.getVar("FOO") 27 pydevshell> bb.build.exec_func("do_unpack", d) 28 pydevshell> 29 30See the ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:functions you can call from within python`" 31section in the BitBake User Manual for details about available functions. 32 33The commands execute just as if the OpenEmbedded build 34system were executing them. Consequently, working this way can be 35helpful when debugging a build or preparing software to be used with the 36OpenEmbedded build system. 37 38Here is an example that uses ``pydevshell`` on a target named 39``matchbox-desktop``:: 40 41 $ bitbake matchbox-desktop -c pydevshell 42 43This command spawns a terminal and places you in an interactive Python 44interpreter within the OpenEmbedded build environment. The 45:term:`OE_TERMINAL` variable 46controls what type of shell is opened. 47 48When you are finished using ``pydevshell``, you can exit the shell 49either by using Ctrl+d or closing the terminal window. 50 51