Use Python standard library which
instead of OS which
#595
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
pyjnius
is installed in an environment that doesn't have thewhich
command, the two functionsget_jdk_home
andget_jre_home
might fail if they try to invoke the OSwhich
command.This PR fixes this issue by instead using the
which
implementation in the Python standard library, namelyshutil.which
for Python 3 anddistutils.spawn.find_executable
for Python 2. If the searched executable wasn't found in the original code the setup was failing with an error, so similarly I raised an explanatory exception in those cases.If the conditional import seems icky, we could:
find_executable
import if you decide to drop Python 2 support, orshutil.which
import sincefind_executable
also works on Python 3, I only kept it becauseshutil.which
seems to have some minor improvements overfind_executable
e.g. checkingPATHEXT
for Windows.