这是indexloc提供的服务,不要输入任何密码
Skip to content

u5surf/python-launcher

 
 

Repository files navigation

The Python Launcher for UNIX

An implementation of the py command for UNIX-based platforms (with some potential experimentation for good measure 😉)

The goal is to have py become the cross-platform command that all Python users use when executing a Python interpreter. By having a version-agnostic command it side-steps the "what should the python command point to?" debate by clearly specifying that upfront (i.e. the newest version of Python that can be found). This also unifies the suggested command to document for launching Python on both Windows as UNIX as py which has existed as the preferred command on Windows for some time.

See the top section of py --help for instructions.

Search order

Please note that while searching, the search for a Python version can become more specific. This leads to a switch in the search algorithm to the one most appropriate to the specificity of the version.

You can always run the Python Launcher with PYVENV_DEBUG set to some value to have it output logging details of how it is performing its search.

py -3.6 (specific version)

  1. Search PATH for python3.6

py -3 (loose/major version)

  1. Check for the PY_PYTHON3 environment variable, and if defined and not the empty string then use it as the specific version (e.g. PY_PYTHON3=3.6)
  2. Search PATH for all instances of python3.*
  3. Find the executable with the newest version number that comes earliest on PATH

py (any version)

  1. Use ${VIRTUAL_ENV}/bin/python immediately if available
  2. If the first argument is a file path ...
    1. Check for a shebang
    2. If shebang path starts with /usr/bin/python, /usr/local/bin/python, /usr/bin/env python or python, proceed based on the version found on that path (bare python is considered the equivalent of not specifying a Python version)
  3. Check for the PY_PYTHON environment variable, and if defined then use it as the loose or specific version (e.g. PY_PYTHON=3 or PY_PYTHON=3.6)
  4. Search PATH for all instances of python*.*
  5. Find the executable with the newest version that is earliest on PATH

TODO

NOTE: I am using this project to learn Rust, so please don't be offended if I choose to implement something myself instead of accepting a pull request that you submit. (Pull requests to do something I have already implemented in a more idiomatic fashion are very much appreciated, though.)

Issues to finish to reach MVP

Appendix

About

Python launcher for UNIX

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 90.7%
  • Python 6.9%
  • Dockerfile 2.4%