From: Ilia Lazarev Date: Tue, 28 Mar 2023 04:12:24 +0000 (+0300) Subject: Specify Python exec path with minor version if available (#3508) X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/bf5abdb0b6cf6644628977230736a0a6478c1bff?ds=sidebyside;pf=etc Specify Python exec path with minor version if available (#3508) Fixes #3507 --- diff --git a/CHANGES.md b/CHANGES.md index 47c04a7..25710b1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -196,6 +196,7 @@ versions separately. - Move 3.11 CI to normal flow now that all dependencies support 3.11 (#3446) - Docker: Add new `latest_prerelease` tag automation to follow latest black alpha release on docker images (#3465) +- Fixed missing python binary path in autoload script for vim (#3508) ### Documentation diff --git a/autoload/black.vim b/autoload/black.vim index c682d51..4eb9b25 100644 --- a/autoload/black.vim +++ b/autoload/black.vim @@ -34,7 +34,7 @@ FLAGS = [ ] -def _get_python_binary(exec_prefix): +def _get_python_binary(exec_prefix, pyver): try: default = vim.eval("g:pymode_python").strip() except vim.error: @@ -43,7 +43,15 @@ def _get_python_binary(exec_prefix): return default if sys.platform[:3] == "win": return exec_prefix / 'python.exe' - return exec_prefix / 'bin' / 'python3' + bin_path = exec_prefix / "bin" + exec_path = (bin_path / f"python{pyver[0]}.{pyver[1]}").resolve() + if exec_path.exists(): + return exec_path + # It is possible that some environments may only have python3 + exec_path = (bin_path / f"python3").resolve() + if exec_path.exists(): + return exec_path + raise ValueError("python executable not found") def _get_pip(venv_path): if sys.platform[:3] == "win": @@ -82,7 +90,7 @@ def _initialize_black_env(upgrade=False): _executable = sys.executable _base_executable = getattr(sys, "_base_executable", _executable) try: - executable = str(_get_python_binary(Path(sys.exec_prefix))) + executable = str(_get_python_binary(Path(sys.exec_prefix), pyver)) sys.executable = executable sys._base_executable = executable print(f'Creating a virtualenv in {virtualenv_path}...')