What This Error Means
pip could not parse a requirement specifier (malformed version constraint, quotes/smart-quotes, comments, or an invalid line in a requirements file).
How to Fix It
Fix invalid specifiers:use name==1.2.3 (pin) or name>=1.2,<2 (range).
If you need extras, quote the whole argument:python -m pip install "transformers[sentencepiece,torch]"
Remove or properly comment out lines in requirements files (comments must start with # at the beginning of the line or after whitespace).
If you're unsure what versions exist, search the package index or consult the package's release history, then pin a real version instead of words like latest.
Why It Happens
A requirement contains invalid version syntax (for example pip== with no version).
A requirement line contains smart quotes (“ / ”) or mismatched quotes (common on Windows shells).
A comment or placeholder like #todo is not formatted as a comment in the current context.
Version constraints are malformed (for example mixing < and >= without a comma separator).
How to Verify
Re-run python -m pip install ... and confirm the Invalid requirement error is gone.
If using a requirements file, run python -m pip install -r requirements.txt and confirm it parses past the previously failing line.
Manual requirements parsing checks
If installing from a file, open it and find the exact line pip reports (run with -v to see more context).
Remove smart quotes and retype quotes using plain ASCII " or '.
If you copied a multiline command, ensure line continuations match your shell.
Examples
ERROR: Invalid requirement: 'pip==': Expected end or semicolon (after name and no valid version specifier)
ERROR: Invalid requirement: 'transformers[sentencepiece,torch]<4.26>=4.23.0': Expected end or semicolon (after version specifier)
ERROR: Invalid requirement: '#'
ERROR: Invalid requirement: "'transformers[torch]'": Expected package name at the start of dependency specifier
ERROR: Invalid requirement: "“isaacsim[all,extscache]==4.5.0”": Expected package name at the start of dependency specifier How pip parses requirement specifiers
pip expects requirements in a specific format, such as name, name==version, name>=1.2,<2, or name[extra]==version.
If a requirement contains invalid syntax (like a trailing ==), smart quotes from copy/paste, or a malformed constraint line, pip fails fast with an Invalid requirement error.
Prevention Tips
Keep requirements files machine-generated when possible (constraints/lock tooling) and avoid manual editing mistakes.
Avoid smart quotes by copying commands from plain text sources.
Prefer one requirement per line with simple specifiers and commas between constraints (e.g. >= and <).
Where This Can Be Triggered
github.com/pypa/pip/blob/25.3/src/pip/_internal/req/constructors.py
pip parses requirement strings and raises an InstallationError when a requirement can't be parsed ("Invalid requirement: ..."). - GitHub
def install_req_from_req_string(
req_string: str,
comes_from: InstallRequirement | None = None,
isolated: bool = False,
user_supplied: bool = False,
) -> InstallRequirement:
try:
req = get_requirement(req_string)
except InvalidRequirement as exc:
raise InstallationError(f"Invalid requirement: {req_string!r}: {exc}")