mirror of
https://github.com/neovim/neovim.git
synced 2025-09-30 15:08:35 +00:00
fix(health): errors in :checkhealth with pyenv-virtualenv #35865
Problem:
pyenv-virtualenv sets a different path for VIRTUAL_ENV than the path to the
python binary it provides, but these paths both symlink to the same file, so
there should be no disparity. The python health-check reports an error, since it
only checks if these paths are equal, not where they point to (resolve to).
Solution:
- Resolve the python symlinks before checking if they are equal.
- Deduplicate some code.
(cherry picked from commit cfe10b4014
)
This commit is contained in:

committed by
github-actions[bot]
![github-actions[bot]](/assets/img/avatar_default.png)
parent
c84ba83cf1
commit
d8a7c86e73
@@ -797,27 +797,32 @@ local function python()
|
||||
local nvim_py_bin = python_exepath(vim.fn.exepath(py_bin_basename))
|
||||
if nvim_py_bin then
|
||||
local subshell_py_bin = python_exepath(py_bin_basename)
|
||||
if venv_bin ~= nvim_py_bin then
|
||||
errors[#errors + 1] = '$PATH yields this '
|
||||
.. py_bin_basename
|
||||
.. ' executable: '
|
||||
.. nvim_py_bin
|
||||
local hint = '$PATH ambiguities arise if the virtualenv is not '
|
||||
.. 'properly activated prior to launching Nvim. Close Nvim, activate the virtualenv, '
|
||||
.. 'check that invoking Python from the command line launches the correct one, '
|
||||
.. 'then relaunch Nvim.'
|
||||
hints[hint] = true
|
||||
end
|
||||
if venv_bin ~= subshell_py_bin then
|
||||
errors[#errors + 1] = '$PATH in subshells yields this '
|
||||
.. py_bin_basename
|
||||
.. ' executable: '
|
||||
.. subshell_py_bin
|
||||
local hint = '$PATH ambiguities in subshells typically are '
|
||||
.. 'caused by your shell config overriding the $PATH previously set by the '
|
||||
.. 'virtualenv. Either prevent them from doing so, or use this workaround: '
|
||||
.. 'https://vi.stackexchange.com/a/34996'
|
||||
hints[hint] = true
|
||||
local bintable = {
|
||||
['nvim'] = {
|
||||
['path'] = nvim_py_bin,
|
||||
['hint'] = '$PATH ambiguities arise if the virtualenv is not '
|
||||
.. 'properly activated prior to launching Nvim. Close Nvim, activate the virtualenv, '
|
||||
.. 'check that invoking Python from the command line launches the correct one, '
|
||||
.. 'then relaunch Nvim.',
|
||||
},
|
||||
['subshell'] = {
|
||||
['path'] = subshell_py_bin,
|
||||
['hint'] = '$PATH ambiguities in subshells typically are '
|
||||
.. 'caused by your shell config overriding the $PATH previously set by the '
|
||||
.. 'virtualenv. Either prevent them from doing so, or use this workaround: '
|
||||
.. 'https://vi.stackexchange.com/a/34996',
|
||||
},
|
||||
}
|
||||
for bintype, bin in pairs(bintable) do
|
||||
if vim.fn.resolve(venv_bin) ~= vim.fn.resolve(bin['path']) then
|
||||
local type_of_path = bintype == 'subshell' and '$PATH' or '$PATH in subshell'
|
||||
errors[#errors + 1] = type_of_path
|
||||
.. ' yields this '
|
||||
.. py_bin_basename
|
||||
.. ' executable: '
|
||||
.. bin['path']
|
||||
hints[bin['hint']] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user