<div dir="ltr">Hi,<div><br></div><div>What would be the difference with current pip module?</div><div>pip.main(['install', 'some_package'])</div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-10-29 20:26 GMT+01:00 Alex Walters <span dir="ltr"><<a href="mailto:tritium-list@sdamon.com" target="_blank">tritium-list@sdamon.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="#0563C1" vlink="#954F72"><div class="m_-7641353750183589075WordSection1"><p class="MsoNormal">I have a somewhat better, imo, implementation of a pip object to be loaded into the repl.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">class pip:<u></u><u></u></p><p class="MsoNormal">    def __call__(self, *a, **kw):<u></u><u></u></p><p class="MsoNormal">        sys.stderr.write(str(self))<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">    def __repr__(self):<u></u><u></u></p><p class="MsoNormal">        return str(self)<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">    def __str__(self):<u></u><u></u></p><p class="MsoNormal">        return “Please run pip from your system command prompt”<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt"><div><div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal"><b>From:</b> Python-ideas [mailto:<a href="mailto:python-ideas-bounces%2Btritium-list" target="_blank">python-ideas-bounces+<wbr>tritium-list</a>=<a href="mailto:sdamon.com@python.org" target="_blank">sdamon.com@<wbr>python.org</a>] <b>On Behalf Of </b>Stephan Houben<br><b>Sent:</b> Sunday, October 29, 2017 3:19 PM<br><b>To:</b> Python-Ideas <<a href="mailto:python-ideas@python.org" target="_blank">python-ideas@python.org</a>><br><b>Subject:</b> [Python-ideas] install pip packages from Python prompt<u></u><u></u></p></div></div><div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p><div><div><div><div><div><div><div><div><p class="MsoNormal" style="margin-bottom:12.0pt">Hi all,<u></u><u></u></p></div><p class="MsoNormal">Here is in somewhat more detail my earlier proposal for<u></u><u></u></p></div><p class="MsoNormal">having in the interactive Python interpreter a `pip` function to <u></u><u></u></p></div><p class="MsoNormal" style="margin-bottom:12.0pt">install packages from Pypi.<u></u><u></u></p></div><p class="MsoNormal">Motivation: it appears to me that there is a category of newbies<u></u><u></u></p></div><p class="MsoNormal" style="margin-bottom:12.0pt">for which "open a shell and do `pip whatever`" is a bit too much.<u></u><u></u></p></div><div><p class="MsoNormal">It would, in my opinion, simplify things a bit if they could just<u></u><u></u></p></div><div><p class="MsoNormal">copy-and-paste some text into the Python interpreter and have<u></u><u></u></p></div><div><p class="MsoNormal">some packages from pip installed. <u></u><u></u></p></div><div><p class="MsoNormal">That would simplify instructions on how to install package xyz,<u></u><u></u></p></div><div><p class="MsoNormal">without going into the vagaries of how to open a shell on various <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">platforms, and how to get to the right pip executable.<u></u><u></u></p></div><div><p class="MsoNormal">I think this could be as simple as:<br><br>  def pip(args):<br>      import sys<br>      import subprocess<br>      subprocess.check_call([sys.<wbr>executable, "-m", "pip"] + args.split())<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">      print("Please re-start Python now to use installed or upgraded packages.")<u></u><u></u></p></div><div><p class="MsoNormal">Note that I added the final message about restarting the interpreter<u></u><u></u></p></div><div><p class="MsoNormal">as a low-tech solution to the problem of packages being already<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">imported in the current Python session.<u></u><u></u></p></div><div><p class="MsoNormal">I would imagine that the author of package xyz would then put on<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">their webpage something like:<u></u><u></u></p></div><div><p class="MsoNormal">  To use, enter in your Python interpreter:<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">     pip("install xyz --user")<u></u><u></u></p></div><div><p class="MsoNormal">As another example, consider prof. Baldwin from Woolamaloo university<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">who teaches a course "Introductory Python programming for Sheep Shavers".<u></u><u></u></p></div><div><p class="MsoNormal">In his course material, he instructs his students to execute the<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">following line in their Python interpreter.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">   pip("install woolamaloo-sheepshavers-<wbr>goodies --user")<u></u><u></u></p></div><div><p class="MsoNormal">which will install a package which will in turn, as dependencies,<u></u><u></u></p></div><div><p class="MsoNormal">pull in a number of packages which are relevant for sheep shaving but<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt">which have nevertheless irresponsibly been left outside the stdlib.<u></u><u></u></p></div><div><p class="MsoNormal">Stephan<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p></div></div></div></div></div></div></div></div><br>______________________________<wbr>_________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/<wbr>codeofconduct/</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Antoine Rozo</div></div>
</div>