Python module with a dash, or hyphen (-) in its name
Solution 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.
Solution 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
Related videos on Youtube

Skip Huffman
I am a Senior Software Engineer in Test. Or maybe a Senior Software Developer in Test. Perhaps a Senior Developer in Test. Could it be a Senior Software Development Engineer in Test. Argh. I build robots in software to break other software. In the computer industry since 1989. Mostly QA, Customer Support, and Documentation. Secondary programmer. I have worked extensively with Forth, Rexx, Perl, and for the past few years, Python.
Updated on July 08, 2022Comments
-
Skip Huffman 11 months
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.)
-
BenH over 11 yearsThis answer in particular: stackoverflow.com/questions/761519/…
-
Georgy almost 3 yearsDoes this answer your question? Is it ok to use dashes in Python files when trying to import them?
-
-
Skip Huffman over 11 yearsThanks. I do understand that conventions should be followed wherever practical. I will be bringing up this specific issue during a departmental code review.
-
Davy M over 5 yearsI was searching for how to do this and your answer applies better to my situation than the older answer. It's always good if you see a distinct answer to the already existing one to add it as a new answer so that people in a position like myself can find all the relevant information in one place.
-
XxJames07- about 1 yearin the python documentation,
__import__
is discouraged (see the documentation) in the favor ofimportlib
. it could cause a lot of issues. (see alsothis post
)