quaint-telephone-89068
11/17/2022, 4:15 PMpython -m module prepends CWD to sys.path.
$ cat code/foo.py
import sys
import os
def main():
print(os.getcwd())
print(sys.path)
if __name__ == "__main__":
main()
$ python -m code.foo
/home/josh/work/pants
['/home/josh/work/pants', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/josh/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']
* * *
PEX help says:
-m MODULE[:SYMBOL], -e MODULE[:SYMBOL], --entry-point MODULE[:SYMBOL]
Set the entry point to module or module:symbol. If just specifying module, pex behaves like python -m, e.g. python -m SimpleHTTPServer. If specifying
module:symbol, pex assume symbol is a n0-arg callable and imports that symbol and invokes it as if via `sys.exit(symbol())`. (default: None)
So presumably using pex -D code -e foo would act like python -m code.foo, however:
$ pex -D=code -e foo
/home/josh/work/pants
['/tmp/tmpnu421wmb', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/tmp/tmpnu421wmb/.bootstrap']
even if I twiddle with `PEX_INHERIT_PATH:
$ PEX_INHERIT_PATH=fallback pex -D=code -e foo
/home/josh/work/pants
['/tmp/tmpfauv3vos', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages', '/tmp/tmpfauv3vos/.bootstrap']
$ PEX_INHERIT_PATH=prefer pex -D=code -e foo
/home/josh/work/pants
['/tmp/tmpyj_l3y5m', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages', '/tmp/tmpyj_l3y5m/.bootstrap']
* * *
Furthermore using a function spec:
$ pex -D=code -e foo:main
/home/josh/work/pants
['/tmp/tmp0kfzbnkw', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/tmp/tmp0kfzbnkw/.bootstrap']
(It's a big ambiguous if this should prepend CWD as per python -m or "" as per python -c as it all depends on how the entry_point runner is invoked.)
pantsbuild/pexuser
11/18/2022, 5:38 PM