Ben Welsh (palewire) raised a proposal on a GitHub pull request [0]:
I've seen newbies flounder when they receive this error after running
manage.py.
$ python manage.py
Traceback (most recent call last):
File "manage.py", line 7, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
The root cause is almost always simple, like forgetting install Django with
pip or neglecting to "activate" a virtual environment. But the Python
jargon doesn't do much to help people new to our world connect the dots.
My proposal: Catch that error and print out a more verbose message that
explains to the user exactly what's wrong. Here's my draft. I'd welcome any
changes, but I think something along these lines could better welcome new
people into Django.
Traceback (most recent call last):
File "manage.py", line 11, in <module>
installed and available on your PATH variable?")
ImportError: Couldn't import Django. Are you sure it's installed and
available on your PYTHONPATH environment variable? Did you forget to
activate a virtual environment?
---------------------
Claude says, "I'm not convinced about this. Aren't we hiding other possibly
helpful import errors (at least on Python 2)?"
Aymeric says, "I share Claude's concern. We've been constantly removing
that sort of "helpful" exception wrapping from Django"
Aymeric again, after further investigation, "Importing
django.core.management doesn't ripple too far. Specifically it doesn't
import any of the user's code. This reduces the likelihood of masking
useful errors. It will mask exception info if Django is installed
incorrectly, for instance because two installs happened in the same
location (but I think that's less likely since pip/virtualenv became
mainstream and since we added code to setup.py to detect existing installs).
Does anyone else have opinions on the change? I suppose another option
could be to try to reraise the original exception with the "helpful
message" added.
[0] https://github.com/django/django/pull/6314
--
You received this message because you are subscribed to the Google Groups
"Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-developers/c3827113-6842-4807-bc23-0d35bd951df7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.