diff --git a/src/pipx/commands/list_packages.py b/src/pipx/commands/list_packages.py index 1b72631..d7bc211 100644 --- a/src/pipx/commands/list_packages.py +++ b/src/pipx/commands/list_packages.py @@ -30,14 +30,21 @@ def list_text( print(f"venvs are in {bold(venv_root_dir)}") print(f"apps are exposed on your $PATH at {bold(str(constants.LOCAL_BIN_DIR))}") + warning_messages = [] all_venv_problems = VenvProblems() for venv_dir in venv_dirs: package_summary, venv_problems = get_venv_summary( venv_dir, include_injected=include_injected ) - print(package_summary) + if venv_problems.any_(): + warning_messages.append(package_summary) + else: + print(package_summary) all_venv_problems.or_(venv_problems) + for warning_message in warning_messages: + print(warning_message, file=sys.stderr) + return all_venv_problems @@ -75,7 +82,7 @@ def list_packages( """Returns pipx exit code.""" venv_dirs: Collection[Path] = sorted(venv_container.iter_venv_dirs()) if not venv_dirs: - print(f"nothing has been installed with pipx {sleep}") + print(f"nothing has been installed with pipx {sleep}", file=sys.stderr) return EXIT_CODE_OK venv_container.verify_shared_libs() @@ -89,27 +96,31 @@ def list_packages( print( "\nOne or more packages contain out-of-date internal data installed from a\n" "previous pipx version and need to be updated.\n" - " To fix, execute: pipx reinstall-all" + " To fix, execute: pipx reinstall-all", + file=sys.stderr, ) if all_venv_problems.invalid_interpreter: print( "\nOne or more packages have a missing python interpreter.\n" - " To fix, execute: pipx reinstall-all" + " To fix, execute: pipx reinstall-all", + file=sys.stderr, ) if all_venv_problems.missing_metadata: print( "\nOne or more packages have a missing internal pipx metadata.\n" " They were likely installed using a pipx version before 0.15.0.0.\n" - " Please uninstall and install these package(s) to fix." + " Please uninstall and install these package(s) to fix.", + file=sys.stderr, ) if all_venv_problems.not_installed: print( "\nOne or more packages are not installed properly.\n" - " Please uninstall and install these package(s) to fix." + " Please uninstall and install these package(s) to fix.", + file=sys.stderr, ) if all_venv_problems.any_(): - print() + print(file=sys.stderr) return EXIT_CODE_LIST_PROBLEM return EXIT_CODE_OK