{"id":"ed4cb24b9706657c","repo":"pypa/pip","slug":"you-need-to-specify-exactly-one-argument","errorCode":null,"errorMessage":"You need to specify exactly one argument","messagePattern":"You need to specify exactly one argument","errorType":"exception","errorClass":"CommandError","httpStatus":null,"severity":"error","filePath":"src/pip/_internal/commands/index.py","lineNumber":125,"sourceCode":"\n        # Pass allow_yanked=False to ignore yanked versions.\n        selection_prefs = SelectionPreferences(\n            allow_yanked=False,\n            release_control=options.release_control,\n            format_control=options.format_control,\n            ignore_requires_python=ignore_requires_python,\n        )\n\n        return PackageFinder.create(\n            link_collector=link_collector,\n            selection_prefs=selection_prefs,\n            target_python=target_python,\n            uploaded_prior_to=options.uploaded_prior_to,\n        )\n\n    def get_available_package_versions(self, options: Values, args: list[Any]) -> None:\n        if len(args) != 1:\n            raise CommandError(\"You need to specify exactly one argument\")\n\n        target_python = cmdoptions.make_target_python(options)\n        query = args[0]\n\n        with self._build_session(options) as session:\n            finder = self._build_package_finder(\n                options=options,\n                session=session,\n                target_python=target_python,\n                ignore_requires_python=options.ignore_requires_python,\n            )\n\n            versions: Iterable[Version] = (\n                candidate.version for candidate in finder.find_all_candidates(query)\n            )\n\n            if self.should_exclude_prerelease(options, canonicalize_name(query)):\n                versions = (","sourceCodeStart":107,"sourceCodeEnd":143,"githubUrl":"https://github.com/pypa/pip/blob/d7d0d0a39494e28ec1c407bd0680e4a4d1067791/src/pip/_internal/commands/index.py#L107-L143","documentation":"Raised by IndexCommand.get_available_package_versions ('pip index versions') when the number of positional arguments is not exactly one. The subcommand queries available versions for a single package, so zero or 2+ tokens are rejected at index.py:124-125.","triggerScenarios":"Running 'pip index versions' with no package, or 'pip index versions pkg1 pkg2' with multiple packages. A shell glob expanding to several names also triggers it.","commonSituations":"Forgetting the package name; batching multiple packages (unsupported); a variable that expanded to empty or to multiple tokens.","solutions":["Pass exactly one package name: 'pip index versions numpy'.","Loop for multiple packages: for p in a b; do pip index versions '$p'; done.","Quote any token that might expand."],"exampleFix":"// before\npip index versions\n// after\npip index versions numpy","handlingStrategy":"validation","validationCode":"if len(packages) != 1:\n    raise SystemExit(\"'pip index versions' needs exactly one package name\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pass exactly one package; loop for multiple.","Quote tokens that may expand via shell globbing."],"tags":["pip","index","cli","invalid-argument","arity"],"analyzedSha":"d7d0d0a39494e28ec1c407bd0680e4a4d1067791","analyzedAt":"2026-08-04T20:55:04.259Z","schemaVersion":2}