You mean with open("/path/to/foo.py") as inf: exec(inf.read())? I’d expect that to work, but:
It doesn’t do namespacing (so instead of being foo.bar any symbols in foo will just end up as bar)
I’d really prefer not to use exec: there are so many ways to misuse it, and it’s hard to tell if it’s being used properly from looking at it. Much less of an issue in research code, but I’d still rather not.
Yes, that’s what I meant. There are many ways to abuse exec, but your way of using importlib.import_module with tweaked path has the same security issues. One death you have to die and exec seems to be the simplest.
Maybe you explain a bit more why you want to pull out the section from the main file. What is the real purpose?
I want to call the section from two different pieces of code I’m experimenting with right now. At some point some of it will likely end up in a real system, but right now it’s all very exploratory.
You mean
with open("/path/to/foo.py") as inf: exec(inf.read())
? I’d expect that to work, but:It doesn’t do namespacing (so instead of being
foo.bar
any symbols infoo
will just end up asbar
)I’d really prefer not to use
exec
: there are so many ways to misuse it, and it’s hard to tell if it’s being used properly from looking at it. Much less of an issue in research code, but I’d still rather not.Yes, that’s what I meant. There are many ways to abuse exec, but your way of using importlib.import_module with tweaked path has the same security issues. One death you have to die and exec seems to be the simplest.
Maybe you explain a bit more why you want to pull out the section from the main file. What is the real purpose?
I want to call the section from two different pieces of code I’m experimenting with right now. At some point some of it will likely end up in a real system, but right now it’s all very exploratory.
Then security doesn’t matter and you can do whatever is simplest. Even the module space doesn’t matter.