Resolve pythonPath before comparing it to shebang #273
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When comparing if the path to the Python interpreter from the shebang in a file and the pythonPath setting point to one and the same interpreter, resolve pythonPath to the path to the actual Python interpreter executable before the comparison.
This solves the problem of having python.pythonPath set to a symlink to the actual Python interpreter and having a /usr/bin/env shebang in a file, where both would actually point to the same interpreter, but the Set as interpreter CodeLens would display anyway, because it wouldn't recognize that.
For example, on macOS, with Python installed by Homebrew,
#!/usr/bin/env python3
andpython.pythonPath: "/usr/local/bin/python3"
both actually point to the same interpreter and givesys.executable == '/usr/local/opt/python3/bin/python3.6'
, but they would be treated as different interpreters.