Brett Cannon added the comment:

First, I don't know what version you're testing against because 3.0.6.1 isn't 
an actual release of Python and 3.6.1 isn't released yet (unless you know 
something I don't know :) ).

Second, the issue is that you're trying to import a module under a name which 
doesn't match the file specified. That's causing reload() to not be able to 
find the original source file to reload against, leading to the None being 
returned by importlib._bootstrap._find_spec() which is leading to the error 
you're seeing. (Remember, reload() basically runs like an import statement for 
the module you're reloading but recycles the module object.)

Third, while an exception is reasonable in this case, it is misleading and 
reload() should be updated to raise an ImportError if _bootstrap._find_spec() 
returns None.

I'm marking this issue as an easy fix since you just need to add an `is None` 
check on a return value and then raise ImportError if necessary in case someone 
wants to propose a PR to improve the error. It will require a doc update to 
document the change in the exception raised.

----------
keywords: +easy
nosy: +brett.cannon, eric.snow, ncoghlan
priority: normal -> low
title: importlib.reload references None object -> Have importlib.reload() raise 
ImportError when a spec can't be found
type: crash -> enhancement
versions: +Python 3.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue29851>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to