You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行pip install -r requirements.txt因-e .报错,需保留该参数求解决方案

问题:保留requirements.txt中的-e .时pip安装依赖失败

报错详情

执行pip install -r requirements.txt时出现以下错误:

× python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [3 lines of output]
      error in ML_Project setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Expected package name at the start of dependency specifier
          -e .
          ^
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details

相关文件内容

requirements.txt

pandas
numpy
seaborn

-e .

setup.py

from setuptools import setup, find_packages
from typing import List

HYPEN_E_DOT = "-e ."

def get_requirements(file_path: str) -> List[str]:
    '''
    This function will return the list of requirements from the requirements.txt file
    '''
    requirements = []
    with open(file_path) as file_obj:
        requirements = file_obj.readlines()
        requirements = [req.replace("\n", " ") for req in requirements]

        if HYPEN_E_DOT in requirements:
            requirements.remove(HYPEN_E_DOT)

    return requirements
    

setup(
name='ML_Project',
version='0.0.1',
author='author',
author_email= 'author@gmail.com',
packages=find_packages(),
install_requires= get_requirements('requirements.txt')

)

解决方案

问题根源在于setup.py的get_requirements函数处理换行时,将-e .变成了-e . (末尾带空格),导致无法匹配HYPEN_E_DOT="-e .",最终把-e . 传入了install_requires参数——而install_requires只接受合法的依赖包名,不支持-e .这种pip可编辑安装指令。

修改get_requirements函数的处理逻辑即可保留requirements.txt中的-e .:

def get_requirements(file_path: str) -> List[str]:
    '''
    This function will return the list of requirements from the requirements.txt file
    '''
    requirements = []
    with open(file_path) as file_obj:
        requirements = file_obj.readlines()
        # 替换换行符为空白,去除前后空格,并过滤空行
        requirements = [req.strip() for req in requirements if req.strip()]

        if HYPEN_E_DOT in requirements:
            requirements.remove(HYPEN_E_DOT)

    return requirements

修改后,函数会正确识别并移除-e .,确保install_requires只包含pandas、numpy、seaborn这些合法依赖;同时requirements.txt中的-e .依然会被pip识别,实现项目的可编辑模式安装。

内容的提问来源于stack exchange,提问作者Harsh Tyagi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 05:17:09