O que parece que você está procurando é chamado de "pull through cache" ou "pull through proxy".
pypicache
Existe um projeto chamado pypicache que pode fazer o que você está pedindo.
Trecho:
pypicache can be used in the following ways:
- As a straight proxy to PyPI, caching package downloads where possible.
- As a completely standalone PyPI server, useful for deploying from.
- As an internal server for hosting custom packages.
A possible day to day workflow could involve a pypicache server running on developer’s machines or in an office. Developers would install packages via this server. This server can also be shared by a deployment build tool which would install from the completely local copy of packages. This allows for repeatable builds.
Lula
Se o pypicache não atender às suas necessidades, usei o Squid para configurar também um cache de proxy. Isso provavelmente será um pouco mais trabalhoso, mas também pode ser usado neste cenário.
Usando um proxy
Aliás, quando você usa um cache de proxy como este, é necessário invocar pip
da seguinte forma:
$ pip install --proxy=https://user@mydomain:port somepackage
OBSERVAÇÃO: Isso pode ser configurado em seu ambiente para que você não tenha que incluir --proxy
para todas as suas chamadas.
$ export https_proxy=http://user@mydomain:port
$ pip install somepackage