Browse Source
bpo-40108: Improve the error message in runpy when importing a module that includes the extension (GH-19239)
pull/19238/merge
Pablo Galindo
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
16 additions and
0 deletions
-
Lib/runpy.py
-
Lib/test/test_cmd_line_script.py
-
Misc/NEWS.d/next/Library/2020-03-31-01-11-20.bpo-40108.EGDVQ_.rst
|
|
|
@ -133,6 +133,9 @@ def _get_module_details(mod_name, error=ImportError): |
|
|
|
# importlib, where the latter raises other errors for cases where |
|
|
|
# pkgutil previously raised ImportError |
|
|
|
msg = "Error while finding module specification for {!r} ({}: {})" |
|
|
|
if mod_name.endswith(".py"): |
|
|
|
msg += (f". Try using '{mod_name[:-3]}' instead of " |
|
|
|
f"'{mod_name}' as the module name.") |
|
|
|
raise error(msg.format(mod_name, type(ex).__name__, ex)) from ex |
|
|
|
if spec is None: |
|
|
|
raise error("No module named %s" % mod_name) |
|
|
|
|
|
|
|
@ -499,6 +499,16 @@ class CmdLineTest(unittest.TestCase): |
|
|
|
self.assertNotIn(b'is a package', err) |
|
|
|
self.assertNotIn(b'Traceback', err) |
|
|
|
|
|
|
|
def test_hint_when_triying_to_import_a_py_file(self): |
|
|
|
with support.temp_dir() as script_dir, \ |
|
|
|
support.change_cwd(path=script_dir): |
|
|
|
# Create invalid *.pyc as empty file |
|
|
|
with open('asyncio.py', 'wb'): |
|
|
|
pass |
|
|
|
err = self.check_dash_m_failure('asyncio.py') |
|
|
|
self.assertIn(b"Try using 'asyncio' instead " |
|
|
|
b"of 'asyncio.py' as the module name", err) |
|
|
|
|
|
|
|
def test_dash_m_init_traceback(self): |
|
|
|
# These were wrapped in an ImportError and tracebacks were |
|
|
|
# suppressed; see Issue 14285 |
|
|
|
|
|
|
|
@ -0,0 +1,3 @@ |
|
|
|
Improve the error message when triying to import a module using :mod:`runpy` |
|
|
|
and incorrently use the ".py" extension at the end of the module name. Patch |
|
|
|
by Pablo Galindo. |