<br><br>On Saturday, November 4, 2017, Erik Bray <<a href="mailto:erik.m.bray@gmail.com">erik.m.bray@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div><div class="gmail_extra"><div class="gmail_quote">On Nov 4, 2017 08:31, "Stephen J. Turnbull" <<a href="javascript:_e(%7B%7D,'cvml','turnbull.stephen.fw@u.tsukuba.ac.jp');" target="_blank">turnbull.stephen.fw@u.<wbr>tsukuba.ac.jp</a>> wrote:<br type="attribution"><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Erik Bray writes:<br>
<br>
 > Nope.  I totally get that they don’t know what a shell or command prompt<br>
 > is.  THEY. NEED. TO. LEARN.<br></div></blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">Just to be clear I did not write this. Someone replying to me did. </div><div dir="auto"><br></div><div dir="auto">I'm going to go over all the different proposals in this thread and see if I can synthesize a list of options.</div></div></blockquote><div><br></div><div>Here's are some of the challenges (both for a pip() function and a GUI):</div><div><br></div><div>- Create reproducible software environments</div><div>  - Log the pip CLI commands</div><div>  - Log whether a version was specified</div><div>  - Be able to replay that log:</div><div>    - Which inputs need to be escaped before passing them through to a shell or exec*? (see: shlex.split())</div><div><br></div><div>- Please don't flood PyPi with unnecessary requests</div><div>  - (Turns out there are 5 invocations of `!pip install' buried somewhere in a script that's run 5 times in a hour by 25 students: even with pip caching package downloads, how many HTTP requests is that? Who pays for PyPi?)</div><div><br></div><div>- There are a number of GUIs for pip: web-based, GUI based, CLI wrappers:</div><div>  - web: </div><div>  - CLI wrappers: pipenv, pipsi; ``conda install pip``</div><div>  - GUI: PyCharm<br></div><div>    - Tcl/Tk is in the standard library.</div><div>    - ``conda install spyder`` installs At</div><div><br></div><div>- pip does not have a stable API.</div><div>  - not even pip.main()</div><div>  - what about the shell CLI?</div><div>    - sarge is still safer than shlex.split()</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div dir="auto"><br></div><div dir="auto"> I think, even if it's not a solution that winds up in the stdlib, it would be good to have some user stories about how package installation from within an interactive prompt might work (even if not from the standard REPL, which it should be noted has had small improvements made to it over the years).</div></div></blockquote><div><br></div><div>This works today but is inadvisable because it risks wasting bandwidth if the %run (!) instructions are frequently re-run unnecessarily:</div><div><br></div><div>$ ipython</div><div>>>> !pip install -U ipython</div><div>>>> exit()</div><div>$ ipython</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div dir="auto"><br></div><div dir="auto">I also have my doubts about whether this *shouldn't* be possible. I mean, to a lot of beginners starting out the basic REPL *is* Python. They're so new to the scene they don't even know what IPython or Jupyter is or why they might want that. They aren't experienced enough to even know what they're missing out on. In classrooms we can resolve that easily by pointing our students to whatever tools we think will work best for them, but not everyone has that privilege. </div></div></blockquote><div> </div><div><a href="https://conda.io/docs/user-guide/install/index.html">https://conda.io/docs/user-guide/install/index.html</a></div><div><br></div><div>$ conda install -y pip ipython notebook spyder</div><div><br></div><div>Or, just:</div><div><br></div><div>$ conda install -y ipython notebook</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div dir="auto"><br></div><div dir="auto">Best, </div><div dir="auto">Erik </div><div dir="auto"><br></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
</div>I don't want to take a position on the proposal, and I agree that we<br>
should *strongly* encourage everyone to learn.  But "THEY. NEED. TO.<br>
LEARN." is not obvious to me.<br>
<br>
Anecdotally, my students are doing remarkably (to me, as a teacher)<br>
complex modeling with graphical interfaces to statistical and<br>
simulation packages (SPSS/AMOS, Artisoc, respectively), and collection<br>
of large textual databases from SNS with cargo-culted Python programs.<br>
For the past twenty years teaching social scientists, these accidental<br>
barriers (as Fred Brooks would have called them) have dropped<br>
dramatically, to the point where it's possible to do superficially<br>
good-looking (= complex) but entirely meaningless :-/ empirical<br>
research.  (In some ways I think this lowered cost has been horribly<br>
detrimental to my work as an educator in applied social science. ;-)<br>
<br>
The point being that "user-friendly" UI in many fields where (fairly)<br>
advanced computing is used is more than keeping up with the perceived<br>
needs of most computer users, while the essential (in the sense of<br>
Brooks) non-computing modeling difficulties of their jobs remain.<br>
<br>
By "perceived" I mean I want my students using TeX, but it's hard to<br>
force them when all their professors (except me and a couple<br>
mathematicians) use Word (speaking of irreproducible results).  It's<br>
good enough for government work, and that's in fact where many of them<br>
end up (and the great majority are either in government or in<br>
equivalent corporate bureaucrat positions).  Yes, I meant the<br>
deprecatory connotations of "perceived", but realistically, I admit<br>
that maybe they *don't* *need* the more polished tech that I could<br>
teach them.</blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">I remember when I first started out teaching Software Carpentry I made the embarrassing mistake (coming from Physics) of assuming that LaTex is de-facto in most other academic fields :) </div><div dir="auto"><br></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
 > Hiding it is not a good idea for anyone.<br>
<br>
</div>Agreed.  Command lines and REPLs teach humility, to me as well as my<br>
students. :-)<br>
<br>
Steve<br>
<font color="#888888"><br>
<br>
--<br>
Associate Professor              Division of Policy and Planning Science<br>
<a href="http://turnbull/sk.tsukuba.ac.jp/" rel="noreferrer" target="_blank">http://turnbull/sk.tsukuba.ac.<wbr>jp/</a>     Faculty of Systems and Information<br>
Email: <a href="javascript:_e(%7B%7D,'cvml','turnbull@sk.tsukuba.ac.jp');" target="_blank">turnbull@sk.tsukuba.ac.jp</a>                   University of Tsukuba<br>
Tel: 029-853-5175                 Tennodai 1-1-1, Tsukuba 305-8573 JAPAN<br>
</font></blockquote></div><br></div></div></div>
</blockquote>