Import gotchas
While modules and packages are extremely useful, there are times when Python's import
machinery can leave you with subtle problems that can take a long time to figure out. In this section, we will discuss some of the more common problems that you are likely to encounter while working with modules and packages.
Using an existing name for your module or package
Imagine that you're writing a program that makes use of the Python Standard Library. For example, you might make use of the random
module to do the following:
import random print(random.choice(["yes", "no"]))
Your program is working correctly until you decide that it has too many mathematical functions in the main script, and you refactor it to move these functions into a separate module. You decide to call this module math.py
, and store it in your main program's directory. As soon as you do this, the previous code will crash with the following error:
Traceback (most recent call last): File "main.py", line 5, in <module...