<#1982 Should `pex ... -e module` be prepending CW...
# github-notifications
q
#1982 Should `pex ... -e module` be prepending CWD? Issue created by thejcannon According to https://docs.python.org/3/library/sys.html#sys.path
python -m module
prepends CWD to
sys.path
.
Copy code
$ cat code/foo.py 
import sys
import os

def main():
    print(os.getcwd())
    print(sys.path)


if __name__ == "__main__":
    main()
Copy code
$ 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:
Copy code
-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:
Copy code
$ 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:
Copy code
$ 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']
Copy code
$ 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:
Copy code
$ 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/pex
u