pip config_error ai_generated true

ERROR: Invalid requirement: 'package==1.0 ; extra == "test"' - Expected end of string after extra specifier

ID: pip/requirements-file-syntax-error-extra

Also available as: JSON · Markdown · 中文
92%Fix Rate
88%Confidence
1Evidence
2023-06-08First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
pip 19.0+ active
Python 3.6-3.12 active

Root Cause

The extras syntax in requirements.txt is malformed: pip expects the extras condition to be a simple marker expression without quoting the extra name, or the extra name must match a valid PEP 508 marker.

generic

中文

requirements.txt 中的 extras 语法格式错误:pip 期望 extras 条件是一个简单的标记表达式,无需引用 extra 名称,或者 extra 名称必须匹配有效的 PEP 508 标记。

Official Documentation

https://pip.pypa.io/en/stable/reference/requirements-file-format/

Workarounds

  1. 95% success Use the correct PEP 508 marker syntax: package==1.0; extra == "test" (no space before semicolon, extra value in double quotes). Example: package==1.0; extra == "test"
    Use the correct PEP 508 marker syntax: package==1.0; extra == "test" (no space before semicolon, extra value in double quotes). Example:
    package==1.0; extra == "test"
  2. 80% success Use a separate requirements file for extras: create requirements-test.txt with just package==1.0 and install with pip install -r requirements-test.txt
    Use a separate requirements file for extras: create requirements-test.txt with just package==1.0 and install with pip install -r requirements-test.txt

中文步骤

  1. Use the correct PEP 508 marker syntax: package==1.0; extra == "test" (no space before semicolon, extra value in double quotes). Example:
    package==1.0; extra == "test"
  2. Use a separate requirements file for extras: create requirements-test.txt with just package==1.0 and install with pip install -r requirements-test.txt

Dead Ends

Common approaches that don't work:

  1. 90% fail

    The quotes are interpreted as part of the package name or marker, causing a different parse error.

  2. 75% fail

    Pip expects the marker value to be a string literal in quotes, e.g., extra == "test", not an unquoted identifier.

  3. 85% fail

    Pip does not support comma-separated extras in requirements.txt; it's invalid syntax.