Importing modules for private use in Python
NO
This is not pythonic... and this is ugly... aaah, I can't get that code out of my head...
There is this thing called __all__
1. How does it work
Make a list, put everything you want to make public in it and boom, you're done.
2. What it doesn't do
You will still be able to do my_module.datetime if datetime is imported in my_module
3. What does it do
When you do from my_module import *, it doesn't import datetime.  Autocomplete will use __all__ if it exist. 
4. What are some great conventions that goes with this
You can put it in the __init__.py if it exists
5. Show me
Numpy uses the warning module but it doesn't pollute your namespace.
&gt;&gt;&gt; import numpy
&gt;&gt;&gt; 'warnings' in dir(numpy)
True
&gt;&gt;&gt; 'warnings' in numpy.__all__
False
&gt;&gt;&gt; from numpy import *
&gt;&gt;&gt; warnings
Traceback (most recent call last):
  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;
NameError: name 'warnings' is not defined


Update:
Every autocomplete in the world* uses __all__ except ipython which uses &quot;some custom logic&quot;(github issue). So I believe the most pythonic solution is go complain on the github issue.
*extrapolation of &quot;the editors I use&quot;