# pip install "file:// does not appear to be a Python project" in CI

> Fix pip "ERROR: file://... does not appear to be a Python project" in CI - pip was pointed at a directory with no pyproject.toml or setup.py.

Source: https://latchkey.dev/learn/python/py-pip-install-file-not-a-python-project-in-ci  
Updated: 2026-06-26

pip was asked to install a local path (`.`, a directory, or a `file://` URL) but found no `pyproject.toml` or `setup.py` there. Without project metadata, pip has nothing to build or install.

## Diagnose it: which interpreter and which environment?

```Terminal
which -a python python3 pip
python -c "import sys; print(sys.executable); print(sys.version)"
python -c "import sys; [print(p) for p in sys.path]"
pip list 2>/dev/null | head -20
```

> Runners ship several Pythons. A package installed by one interpreter and imported by another produces a module-not-found error that looks like a failed install.

## FAQ

### What causes pip install "file:// does not appear to be a Python project" in CI?

There are 2 common causes: the install path is the wrong directory and a monorepo subproject was not targeted. pip ran from (or was pointed at) a directory above or beside the project, where no pyproject.toml/setup.py exists.

### How do I fix pip install "file:// does not appear to be a Python project" in CI?

There are 2 fixes depending on which cause you have: install from the directory that has the metadata and add a build configuration if it is missing. Work through them in order, since the first is the most common.

### What does pip install "file:// does not appear to be a Python project" in CI actually mean?

pip fails with "ERROR: file:///home/runner/work/app/app does not appear to be a Python project: neither 'setup.py' nor 'pyproject.toml' found".

### How do I stop pip install "file:// does not appear to be a Python project" in CI happening again?

Run pip install from the directory holding the project metadata. The prevention section lists 3 changes that keep it from recurring.

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
