Skip to content

'file:' identifier in '--requirements' argument yields FileNotFoundError #10237

@mfansler

Description

@mfansler

Description

Using a file: identifier when providing a --requirements|-r argument results in FileNotFoundError.

Expected behavior

The file should be found.

Previous versions worked fine. Alternatively, omitting the file: identifier works.

pip version

21.2.1

Python version

3.9.6

OS

MacOS 10.14

How to Reproduce

  1. Create and activate Conda environment with:

    conda create -n foo -c conda-forge python=3.9 pip=21.2.1
    conda activate foo
  2. Create requirements.txt:

    echo "numpy" > requirements.txt
  3. Run install command:

    pip install -r file:requirements.txt
  4. Error.

Output

(foo) bash-3.2$ pip install -r file:requirements.txt

ERROR: Exception:                                                                                                                                                                         
Traceback (most recent call last):                                                                                                                                                        
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 173, in _main                                                            
    status = self.run(options, args)                                                                                                                                                      
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 203, in wrapper                                                           
    return func(self, options, args)                                                                                                                                                      
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 286, in run                                                              
    reqs = self.get_requirements(args, options, finder, session)                                                                                                                          
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 384, in get_requirements                                                  
    for parsed_req in parse_requirements(                                                                                                                                                 
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/req/req_file.py", line 135, in parse_requirements                                                   
    for parsed_line in parser.parse(filename, constraint):                                                                                                                                
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/req/req_file.py", line 319, in parse                                                                
    yield from self._parse_and_recurse(filename, constraint)                                                                                                                              
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/req/req_file.py", line 324, in _parse_and_recurse                                                   
    for line in self._parse_file(filename, constraint):                                                                                                                                   
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/req/req_file.py", line 353, in _parse_file                                                          
    _, content = get_file_content(filename, self._session)                                                                                                                                
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/req/req_file.py", line 518, in get_file_content                                                     
    resp = session.get(url)                                                                                                                                                               
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py", line 555, in get                                                               
    return self.request('GET', url, **kwargs)                                                                                                                                             
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_internal/network/session.py", line 454, in request                                                           
    return super().request(method, url, *args, **kwargs)                                                                                                                                  
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py", line 542, in request                                                           
    resp = self.send(prep, **send_kwargs)                                                                                                                                                 
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py", line 697, in send                                                              
    r.content                                                                                                                                                                             
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_vendor/requests/models.py", line 836, in content                                                             
    self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''                                                                                                                
  File "/Users/mfansler/miniconda3/envs/foo/lib/python3.9/site-packages/pip/_vendor/requests/models.py", line 769, in generate                                                            
    chunk = self.raw.read(chunk_size)                                                                                                                                                     
AttributeError: 'FileNotFoundError' object has no attribute 'read'

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions