> -----Original Message-----
> From: Python-ideas [mailto:python-ideas-bounces+tritium-
> list=sdamon....@python.org] On Behalf Of Erik Bray
> Sent: Monday, October 30, 2017 6:28 AM
> To: Python-Ideas <python-ideas@python.org>
> Subject: Re: [Python-ideas] install pip packages from Python prompt
> 
> On Sun, Oct 29, 2017 at 8:45 PM, Alex Walters <tritium-l...@sdamon.com>
> wrote:
> > Then those users have more fundamental problems.  There is a minimum
> level
> > of computer knowledge needed to be successful in programming.
> Insulating
> > users from the reality of the situation is not preparing them to be
> > successful.  Pretending that there is no system command prompt, or shell,
> or
> > whatever platform specific term applies, only hurts new programmers.
> Give
> > users an error message they can google, and they will be better off in the
> > long run than they would be if we just ran pip for them.
> 
> While I completely agree with this in principle, I think you
> overestimate the average beginner.

Nope.  I totally get that they don’t know what a shell or command prompt is.  
THEY. NEED. TO. LEARN.  Hiding it is not a good idea for anyone.  If this is an 
insurmountable problem for the newbie, maybe they really shouldn’t be 
attempting to program.  This field is not for everyone.

>  Many beginners I've taught or
> helped, even if they can manage to get to the correct command prompt,
> often don't even know how to run the correct Python.  They might often
> have multiple Pythons installed on their system--maybe they have
> Anaconda, maybe Python installed by homebrew, or a Python that came
> with an IDE like Spyder.  If they're on OSX often running "python"
> from the command prompt gives the system's crippled Python 2.6 and
> they don't know the difference.
> 
> One thing that has been a step in the right direction is moving more
> documentation toward preferring running `python -m pip` over just
> `pip`, since this often has a better guarantee of running `pip` in the
> Python interpreter you intended.  But that still requires one to know
> how to run the correct Python interpreter from the command-line (which
> the newbie double-clicking on IDLE may not even have a concept of...).
> 
> While I agree this is something that is important for beginners to
> learn (e.g. print(sys.executable) if in doubt), it *is* a high bar for
> many newbies just to install one or two packages from pip, which they
> often might need/want to do for whatever educational pursuit they're
> following (heck, it's pretty common even just to want to install the
> `requests` module, as I would never throw `urllib` at a beginner).
> 
> So while I don't think anything proposed here will work technically, I
> am in favor of an in-interpreter pip install functionality.  Perhaps
> it could work something like this:
> 
> a) Allow it *only* in interactive mode:  running `pip(...)` (or
> whatever this looks like) outside of interactive mode raises a
> `RuntimeError` with the appropriate documentation
> b) When running `pip(...)` the user is supplied with an interactive
> prompt explaining that since installing packages with `pip()` can
> result in changes to the interpreter, it is necessary to restart the
> interpreter after installation--give them an opportunity to cancel the
> action in case they have any work they need to save.  If they proceed,
> install the new package then restart the interpreter for them.  This
> avoids any ambiguity as to states of loaded modules before/after pip
> install.
> 
> 
> 
> > From: Stephan Houben [mailto:stephan...@gmail.com]
> > Sent: Sunday, October 29, 2017 3:43 PM
> > To: Alex Walters <tritium-l...@sdamon.com>
> > Cc: Python-Ideas <python-ideas@python.org>
> > Subject: Re: [Python-ideas] install pip packages from Python prompt
> >
> >
> >
> > Hi Alex,
> >
> >
> >
> > 2017-10-29 20:26 GMT+01:00 Alex Walters <tritium-l...@sdamon.com>:
> >
> >         return “Please run pip from your system command prompt”
> >
> >
> >
> >
> >
> > The target audience for my proposal are people who do not know
> >
> > which part of the sheep the "system command prompt" is.
> >
> > Stephan
> >
> >
> >
> >
> >
> > From: Python-ideas
> > [mailto:python-ideas-bounces+tritium-list=sdamon....@python.org] On
> Behalf
> > Of Stephan Houben
> > Sent: Sunday, October 29, 2017 3:19 PM
> > To: Python-Ideas <python-ideas@python.org>
> > Subject: [Python-ideas] install pip packages from Python prompt
> >
> >
> >
> > Hi all,
> >
> > Here is in somewhat more detail my earlier proposal for
> >
> > having in the interactive Python interpreter a `pip` function to
> >
> > install packages from Pypi.
> >
> > Motivation: it appears to me that there is a category of newbies
> >
> > for which "open a shell and do `pip whatever`" is a bit too much.
> >
> > It would, in my opinion, simplify things a bit if they could just
> >
> > copy-and-paste some text into the Python interpreter and have
> >
> > some packages from pip installed.
> >
> > That would simplify instructions on how to install package xyz,
> >
> > without going into the vagaries of how to open a shell on various
> >
> > platforms, and how to get to the right pip executable.
> >
> > I think this could be as simple as:
> >
> >   def pip(args):
> >       import sys
> >       import subprocess
> >       subprocess.check_call([sys.executable, "-m", "pip"] + args.split())
> >
> >       print("Please re-start Python now to use installed or upgraded
> > packages.")
> >
> > Note that I added the final message about restarting the interpreter
> >
> > as a low-tech solution to the problem of packages being already
> >
> > imported in the current Python session.
> >
> > I would imagine that the author of package xyz would then put on
> >
> > their webpage something like:
> >
> >   To use, enter in your Python interpreter:
> >
> >      pip("install xyz --user")
> >
> > As another example, consider prof. Baldwin from Woolamaloo university
> >
> > who teaches a course "Introductory Python programming for Sheep
> Shavers".
> >
> > In his course material, he instructs his students to execute the
> >
> > following line in their Python interpreter.
> >
> >    pip("install woolamaloo-sheepshavers-goodies --user")
> >
> > which will install a package which will in turn, as dependencies,
> >
> > pull in a number of packages which are relevant for sheep shaving but
> >
> > which have nevertheless irresponsibly been left outside the stdlib.
> >
> > Stephan
> >
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > Python-ideas mailing list
> > Python-ideas@python.org
> > https://mail.python.org/mailman/listinfo/python-ideas
> > Code of Conduct: http://python.org/psf/codeofconduct/
> >
> _______________________________________________
> Python-ideas mailing list
> Python-ideas@python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to