diff --git a/README.adoc b/README.adoc index 071748a..cf183d8 100644 --- a/README.adoc +++ b/README.adoc @@ -18506,6 +18506,8 @@ The only `Impl` used appears to be `O3CPUImpl`? This is explicitly instantiated template class O3ThreadContext; .... +see also: https://stackoverflow.com/questions/64420547/in-gem5-how-do-i-know-the-specific-location-of-the-class/64423633#64423633 + Unlike in `SimpleThread` however, `O3ThreadContext` does not contain the register data itself, e.g. `O3ThreadContext::readIntRegFlat` instead forwards to `cpu`: .... @@ -20912,6 +20914,19 @@ link:rootfs_overlay/lkmc/python/unittest_find/[] contains examples to test how t * https://stackoverflow.com/questions/1732438/how-do-i-run-all-python-unit-tests-in-a-directory * https://stackoverflow.com/questions/46976256/recursive-unittest-discovery-with-python3-and-without-init-py-files +====== Python relative imports + +link:rootfs_overlay/lkmc/python/relative_import/[] contains examples to test how how to do relative imports in Python. + +This subject is impossible to understand. + +Related questions: + +* https://stackoverflow.com/questions/16981921/relative-imports-in-python-3 +* https://stackoverflow.com/questions/14132789/relative-imports-for-the-billionth-time +* https://stackoverflow.com/questions/21490860/relative-imports-with-unittest-in-python +* https://stackoverflow.com/questions/714063/importing-modules-from-parent-folder + ===== Build and install the interpreter Buildroot has a Python package that can be added to the guest image: diff --git a/rootfs_overlay/lkmc/python/relative_import/README.adoc b/rootfs_overlay/lkmc/python/relative_import/README.adoc new file mode 100644 index 0000000..825f1f2 --- /dev/null +++ b/rootfs_overlay/lkmc/python/relative_import/README.adoc @@ -0,0 +1 @@ +https://cirosantilli.com/linux-kernel-module-cheat#python-relative-imports diff --git a/rootfs_overlay/lkmc/python/relative_import/__init__.py b/rootfs_overlay/lkmc/python/relative_import/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/rootfs_overlay/lkmc/python/relative_import/mydir/__init__.py b/rootfs_overlay/lkmc/python/relative_import/mydir/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/rootfs_overlay/lkmc/python/relative_import/mydir/myfile_user.py b/rootfs_overlay/lkmc/python/relative_import/mydir/myfile_user.py new file mode 100755 index 0000000..75755b3 --- /dev/null +++ b/rootfs_overlay/lkmc/python/relative_import/mydir/myfile_user.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python + +import myfile + +assert myfile.a == 1 + +b = myfile.a + 1 diff --git a/rootfs_overlay/lkmc/python/relative_import/myfile.py b/rootfs_overlay/lkmc/python/relative_import/myfile.py new file mode 100644 index 0000000..1337a53 --- /dev/null +++ b/rootfs_overlay/lkmc/python/relative_import/myfile.py @@ -0,0 +1 @@ +a = 1 diff --git a/rootfs_overlay/lkmc/python/relative_import/myfile_user.py b/rootfs_overlay/lkmc/python/relative_import/myfile_user.py new file mode 100755 index 0000000..1042dab --- /dev/null +++ b/rootfs_overlay/lkmc/python/relative_import/myfile_user.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python + +import myfile +import mydir.myfile_user + +assert myfile.a == 1 +assert mydir.myfile_user.b == 2 diff --git a/rootfs_overlay/lkmc/python/relative_import/test b/rootfs_overlay/lkmc/python/relative_import/test new file mode 100755 index 0000000..b63d1ba --- /dev/null +++ b/rootfs_overlay/lkmc/python/relative_import/test @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -eux + +# myfile_user works from all directories. +./myfile_user.py +cd .. +relative_import/myfile_user.py +cd relative_import/mydir +../myfile_user.py +cd .. + +# TODO any better way to run mydir/myfile_user.py? + +# ./mydir/myfile_user.py +#Traceback (most recent call last): +# File "./mydir/myfile_user.py", line 3, in +# import myfile +#ModuleNotFoundError: No module named 'myfile' + +python -m mydir.myfile_user