I have an existing python module with a dash in its name, foo-bar.py
Changing the module name is something I would prefer to avoid as the module is shared, and I would have to chase down all the places it is used so that my special case will work.
Is there a way to load a module whose name contains the typically forbidden ‘-‘?
(I do understand that this isn’t a best practice. But for this situation I would prefer not to redesign and test a much larger set of applications. Also I don’t think my corporate masters would approve of my taking the time to implement such a change.)
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You can do that using __import__(). For example:
foobar = __import__("foo-bar")
But you really should rename the module instead. That way you can avoid confusion where the filename of the module is different from the identifier used in the program.
Method 2
I know this question has already been answered to satisfaction of the asker, but here is another answer which I believes has some merit above using __import__().
import importlib
mod = importlib.import_module("path.to.my-module")
# mod.yourmethod()
According to the docs:
"This provides an implementation of import which is portable to any Python interpreter. This also provides an implementation which is easier to comprehend than one implemented in a programming language other than Python."
Python 2.7 + only
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0