Re: A helpful ImportError for manage.py when Django isn't installed/available

2016-04-09 Thread Tim Graham
I implemented Shai's suggestion here: 
https://github.com/django/django/pull/6438

I think we can drop that extra complication when dropping Python 2.

On Friday, April 1, 2016 at 6:23:55 AM UTC-4, Shai Berger wrote:
>
> An idea: Catch the exception; in the handler, try to simply "import 
> django". 
> If this works, reraise, if it fails, print helpful message. 
>
> On Thursday 31 March 2016 20:15:05 Tim Graham wrote: 
> > 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  
> > 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  
> > 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 django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
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/f3c19c33-fa3f-4bb3-8d12-859186f4ba93%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: A helpful ImportError for manage.py when Django isn't installed/available

2016-04-07 Thread Tim Graham
Yes, I always install Django in a virtualenv rather than system-wide. I'm 
sure there are some users installing it system-wide, but I think that's 
more and more a niche use case.

On Thursday, April 7, 2016 at 4:33:44 PM UTC-4, Rafael Henter wrote:
>
> Tim Graham,
>
> How do you install django? Are you using virtualenv ?
>
> Best,
>
> Rafael Henter
>
>
> On Thursday, March 31, 2016 at 2:15:05 PM UTC-3, Tim Graham wrote:
>>
>> 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 
>> 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 
>> 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 django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
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/4ad80dce-716f-4232-be0e-c6cfe559ad27%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: A helpful ImportError for manage.py when Django isn't installed/available

2016-04-07 Thread Rafael Henter
Tim Graham,

How do you install django? Are you using virtualenv ?

Best,

Rafael Henter


On Thursday, March 31, 2016 at 2:15:05 PM UTC-3, Tim Graham wrote:
>
> 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 
> 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 
> 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 django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
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/5cd2ada4-e61e-4cb3-9fad-a71cce3d29d7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: A helpful ImportError for manage.py when Django isn't installed/available

2016-04-03 Thread Collin Anderson
We could also wait til after we remove py2 support in January. That way we
can be sure that on py3 it will also print the original exception so it
doesn't get hidden. (Right?)

On Fri, Apr 1, 2016 at 6:23 AM, Shai Berger  wrote:

> An idea: Catch the exception; in the handler, try to simply "import
> django".
> If this works, reraise, if it fails, print helpful message.
>
> On Thursday 31 March 2016 20:15:05 Tim Graham wrote:
> > 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 
> > 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 
> > 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 django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
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/CAFO84S7xXEUzRXRS%2BPDHc0%2Bso_aa0jkNSO9M0wTD%3DcFXrxHb0A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: A helpful ImportError for manage.py when Django isn't installed/available

2016-04-01 Thread Shai Berger
An idea: Catch the exception; in the handler, try to simply "import django". 
If this works, reraise, if it fails, print helpful message.

On Thursday 31 March 2016 20:15:05 Tim Graham wrote:
> 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 
> 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 
> 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