Hi, I've been doing what you have suggested:
from circle import circle_length
and by commenting out the rest of the script(in circle.py) there is no problem.
Now, to understand why that may be the case. As we have learnt from prof. Mancini's lessons, python is a compiler language, meaning that it reads and executes only a line at a time. Now, putting the functions on top of the script doesn't make a difference: all circle.py is still computed before the program calculates anything from our test.py. This means that python doesn't read through the script until it finds circle_length (as you've said in another comment, the intuitive thing to do), but it executes the program and saves the function somewhere(to demonstrate this: comment away every line in circle.py apart from the function circle_length and put "print(2)" anywhere in the script. Python will output the 2 before anything else, even if there is an error in test.py). Now, I think this is just a characteristic of "from ... import ..." and specifically of "from" and that there must be another instruction that does the intuitive thing. I'm browsing the web to find an answer. As soon as i find it, I'll modify this comment.