diff --git a/python/ruff/__main__.py b/python/ruff/__main__.py index fa8c656f32..9db95031bc 100644 --- a/python/ruff/__main__.py +++ b/python/ruff/__main__.py @@ -8,9 +8,9 @@ def find_ruff_bin() -> str: ruff_exe = "ruff" + sysconfig.get_config_var("EXE") - path = os.path.join(sysconfig.get_path("scripts"), ruff_exe) - if os.path.isfile(path): - return path + scripts_path = os.path.join(sysconfig.get_path("scripts"), ruff_exe) + if os.path.isfile(scripts_path): + return scripts_path if sys.version_info >= (3, 10): user_scheme = sysconfig.get_preferred_scheme("user") @@ -21,11 +21,19 @@ def find_ruff_bin() -> str: else: user_scheme = "posix_user" - path = os.path.join(sysconfig.get_path("scripts", scheme=user_scheme), ruff_exe) - if os.path.isfile(path): - return path + user_path = os.path.join( + sysconfig.get_path("scripts", scheme=user_scheme), ruff_exe + ) + if os.path.isfile(user_path): + return user_path - raise FileNotFoundError(path) + # Search in `bin` adjacent to package root (as created by `pip install --target`). + pkg_root = os.path.dirname(os.path.dirname(__file__)) + target_path = os.path.join(pkg_root, "bin", ruff_exe) + if os.path.isfile(target_path): + return target_path + + raise FileNotFoundError(scripts_path) if __name__ == "__main__":