[Python-ideas] Syntax to import modules before running command from the command line

Barry Warsaw barry at python.org
Tue Jan 9 16:54:52 EST 2018


Steve Barnes wrote:
> Currently invoking `python -c "some;separated;set of commands;"` will, 
> if you need to use any library functions, require one or more import 
> somelib; sections in the execution string. This results in rather 
> complex "one liners".
> 
> On the other hand `python -m somelib` will load somelib and attempt to 
> execute its `__main__()` or give an error if there isn't one.
> 
> What I would like to suggest is a mechanism to pre-load libraries before 
> evaluating the -c option as this would allow the use of code from 
> libraries that don't have a `__main__` function, or those that do but it 
> doesn't do what you want.

It would be really cool if you could somehow write a file with a bunch
of commands in it, and then get Python to execute those commands.  Then
it could still be a one line invocation, but you could do much more
complex things, including import a bunch of modules before executing
some code.  I'm not sure what such a file would look like but here's a
strawman:

```
import os
import sys
import somelib

path = somelib.get_path()
parent = os.path.dirname(path)
print(parent)

sys.exit(0 if os.path.isdir(parent) else 1)
```

Then you could run it like so:

$ python3 myscript.py

That seems like a nice, compact, one line invocation, but cI don't know,
it probably needs some fleshing out.  It's just a crazy idea, and
there's probably not enough time to implement this for Python 3.7.
Maybe for Python 3.8.

time-machine-winking-ly y'rs,
-Barry




More information about the Python-ideas mailing list