On Tuesday 05 April 2016 14:27, Rustom Mody wrote: > On Tuesday, April 5, 2016 at 9:53:30 AM UTC+5:30, Chris Angelico wrote: >> On Tue, Apr 5, 2016 at 2:08 PM, Rustom Mody wrote: >> >> 'import tk.ttk' looks for 'tk' in sys.modules, does not find it, looks >> >> for a module named 'tk' on disk, does not find it, and says so. >> > >> > A well-known quote comes to mind: >> > >> > | There are only two hard things in Computer Science: cache >> > | invalidation and naming things. >> > >> > eg. http://martinfowler.com/bliki/TwoHardThings.html >> > >> > particularly since this seems to be in both categories :-) >> >> sys.modules isn't really a cache in that sense, though. The "hard >> problem" of cache invalidation comes from the fundamental assumption >> that a cache hit should be semantically identical to a cache miss; > > Following looks like a cache miss to me (certainly did to the OP): > > On Monday, April 4, 2016 at 9:01:41 PM UTC+5:30, ast wrote: >> hello >> >> >>> import tkinter as tk >> >>> import tk.ttk as ttk >> >> Traceback (most recent call last): >> File "<pyshell#3>", line 1, in <module> >> import tk.ttk as ttk >> ImportError: No module named 'tk'
But that *miss* isn't cached -- if the OP then created a package called "tk" with a submodule called "ttk", and then re-ran the `import tk.ttk as ttk` line, the import subsystem would have picked up the newly created package and imported it. I think that's the point Chris was trying to make. -- Steve -- https://mail.python.org/mailman/listinfo/python-list