I've tried to find a comprehensive guide on whether it is best to use import module or from module import. I've just started with Python and I'm trying to start off with best practices in mind.
Basically, I was hoping if anyone could share their experiences, what preferences other developers have and what's the best way to avoid any gotchas down the road?
The difference between import module and from module import foo is mainly subjective.  Pick the one you like best and be consistent in your use of it.  Here are some points to help you decide.
import module

Pros:

Less maintenance of your import statements. Don't need to add any additional imports to start using another item from the module

Cons:

Typing module.foo in your code can be tedious and redundant (tedium can be minimized by using import module as mo then typing mo.foo)


from module import foo

Pros:

Less typing to use foo
More control over which items of a module can be accessed

Cons:

To use a new item from the module you have to update your import statement
You lose context about foo. For example, it's less clear what ceil() does compared to math.ceil()


Either method is acceptable, but don't use from module import *.  
For any reasonable large set of code, if you import * you will likely be cementing it into the module, unable to be removed.  This is because it is difficult to determine what items used in the code are coming from 'module', making it easy to get to the point where you think you don't use the import any more but it's extremely difficult to be sure.
Use 'import module' or 'from module import'?