Paul, I understand what you say, except the part of compatibility with
Python3.5. Of course such a change is targeting future version more than
the current and previous versions. If we have this syntax for Python3.6,
users of Python3.9 will find many copy-pastable answers written this way,
and other answers will have comments saying "just add this statement to the
beginning of your script".
On Mon, Sep 19, 2016 at 11:24 PM Paul Moore <p.f.mo...@gmail.com> wrote:
> On 19 September 2016 at 19:52, אלעזר <elaz...@gmail.com> wrote:
> > Of course it doesn't address the issues - for example, running a python
> > script from the file manager will result in a failed execution,
> What you're talking about here is deployment of Python "applications"
> (where in your case, you're focusing on single-file scripts, but the
> problem is broader). Beyond a certain point, as I'm sure you realise,
> you can't solve this issue - someone tries to run a Unix-only script
> on Windows, for example. So really, we're looking at ways of improving
> the current state of affairs. As things stand, deploying "standalone
> applications" in Python is not particularly easy, with dependency
> management being only one of the issues.
> Some options for deployment come to mind - I'm sure none of them seem
> quite as easy as "just run this script", but you should remember that
> even "just run this script" doesn't always work as well as you'd like
> - on Unix you need to make the script executable and have a shebang
> line, on Windows the file extension needs to be right and registered.
> Not all users have the right (or sometimes any) Python version on
> their PATH, etc. So even "just run this script" isn't always simple
> even if the script has no dependencies outside the stdlib.
> So, some options:
> 1. The previously-mentioned rwt makes "just run this script" work as
> you want, as long as you have rwt installed. Conceded, it isn't
> available by default, but it's not hard to install as a one-off task.
> And there's a discussion ongoing about including it with pip as "pip
> run" so "pip run myscript.py" (or "py -m pip run myscript.py" on
> Windows - remember what I said about PATH? ;-)) will run a script with
> its dependencies.
> 2. You can bundle your script with its dependencies using zipapp. On
> Unix, you can even make the resulting file executable, and on Windows,
> the .pyz extension is registered for this.
> 3. Someone could write a tool to scan a script for a
> specially-formatted comment at the top that described its
> dependencies, and installed them. That (in effect) adds an "install"
> step before the script can be run, but lots of utilities have that, so
> it's not completely unheard of. And if it's GUI users you're concerned
> about, you could make that a GUI utility. Drag the script onto it, it
> lists the dependencies and confirms you want them installed, then
> offers to run the script.
> 4. There are existing platform-specific options like py2exe or
> cx_Freeze. Probably a bit heavyweight for a "simple script", though.
> Of course, none of these options cover the use case of "I saw this
> nice script on Stack Overflow, so I copied it, and now I want to run
> it on my PC". But honestly, if it has some dependencies, and the
> script author didn't say "you need to install FOO and BAR", or the
> user doesn't know how to install those dependencies, you're probably
> out of luck anyway. Even if the proposed "from __pypi__ import foo"
> syntax existed, I doubt many scripts posted on the web would use it -
> if only because then, Python 3.5 users wouldn't be able to run the
> IMO, for command line use, rwt is 99% of the way to what you want. For
> GUI use, there's nothing specific to this problem right now, but
> someone could certainly write something. A syntax change to the
> language would likely be *less* useful, as people would not be able to
> use it unless they were deliberately only targeting Python 3.7 and
> later, which seems optimistic at best...
Python-ideas mailing list
Code of Conduct: http://python.org/psf/codeofconduct/