spack python: add --path option (#22006)
This adds a `--path` option to `spack python` that shows the `python` interpreter that Spack is using. e.g.: ```console $ spack python --path /Users/gamblin2/src/spack/var/spack/environments/default/.spack-env/view/bin/python ``` This is useful for debugging, and we can ask users to run it to understand what python Spack is picking up via preferences in `bin/spack` and via the `SPACK_PYTHON` environment variable introduced in #21222.
This commit is contained in:
		| @@ -33,6 +33,9 @@ def setup_parser(subparser): | |||||||
|     subparser.add_argument( |     subparser.add_argument( | ||||||
|         '-m', dest='module', action='store', |         '-m', dest='module', action='store', | ||||||
|         help='run library module as a script') |         help='run library module as a script') | ||||||
|  |     subparser.add_argument( | ||||||
|  |         '--path', action='store_true', dest='show_path', | ||||||
|  |         help='show path to python interpreter that spack uses') | ||||||
|     subparser.add_argument( |     subparser.add_argument( | ||||||
|         'python_args', nargs=argparse.REMAINDER, |         'python_args', nargs=argparse.REMAINDER, | ||||||
|         help="file to run plus arguments") |         help="file to run plus arguments") | ||||||
| @@ -43,6 +46,10 @@ def python(parser, args, unknown_args): | |||||||
|         print('Python', platform.python_version()) |         print('Python', platform.python_version()) | ||||||
|         return |         return | ||||||
| 
 | 
 | ||||||
|  |     if args.show_path: | ||||||
|  |         print(sys.executable) | ||||||
|  |         return | ||||||
|  | 
 | ||||||
|     if args.module: |     if args.module: | ||||||
|         sys.argv = ['spack-python'] + unknown_args + args.python_args |         sys.argv = ['spack-python'] + unknown_args + args.python_args | ||||||
|         runpy.run_module(args.module, run_name="__main__", alter_sys=True) |         runpy.run_module(args.module, run_name="__main__", alter_sys=True) | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ | |||||||
| # SPDX-License-Identifier: (Apache-2.0 OR MIT) | # SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||||||
| 
 | 
 | ||||||
| import platform | import platform | ||||||
|  | import sys | ||||||
| 
 | 
 | ||||||
| import pytest | import pytest | ||||||
| 
 | 
 | ||||||
| @@ -18,6 +19,11 @@ def test_python(): | |||||||
|     assert out.strip() == spack.spack_version |     assert out.strip() == spack.spack_version | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def test_python_interpreter_path(): | ||||||
|  |     out = python('--path') | ||||||
|  |     assert out.strip() == sys.executable | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def test_python_version(): | def test_python_version(): | ||||||
|     out = python('-V') |     out = python('-V') | ||||||
|     assert platform.python_version() in out |     assert platform.python_version() in out | ||||||
|   | |||||||
| @@ -1385,7 +1385,7 @@ _spack_pydoc() { | |||||||
| _spack_python() { | _spack_python() { | ||||||
|     if $list_options |     if $list_options | ||||||
|     then |     then | ||||||
|         SPACK_COMPREPLY="-h --help -V --version -c -i -m" |         SPACK_COMPREPLY="-h --help -V --version -c -i -m --path" | ||||||
|     else |     else | ||||||
|         SPACK_COMPREPLY="" |         SPACK_COMPREPLY="" | ||||||
|     fi |     fi | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Todd Gamblin
					Todd Gamblin