Hospedando seu próprio repositório simples

Se você deseja hospedar seu próprio repositório simples [1], você pode usar um pacote de software como devpi ou você pode simplesmente criar a estrutura de diretório apropriada e usar qualquer servidor web que pode servir arquivos estáticos e gerar um autoindex.

Em ambos os casos, como você hospedará um repositório que provavelmente não está nos repositórios padrão do usuário, você deve instruí-los na descrição do seu projeto para configurar o instalador apropriadamente. Por exemplo, com pip:

python3 -m pip install --extra-index-url https://python.example.com/ foobar
py -m pip install --extra-index-url https://python.example.com/ foobar

Além disso, é altamente recomendado que você sirva seu repositório com HTTPS válido. Neste momento, a segurança das instalações do seu usuário depende de todos os repositórios usando uma configuração válida do HTTPS.

Repositório “manual”

O layout do diretório é bastante simples, dentro de um diretório raiz você precisa criar um diretório para cada projeto. Este diretório deve ser o nome normalizado do projeto. Em cada um desses diretórios, basta colocar cada um dos arquivos para download. Se você tem os projetos “Foo” (com as versões 1.0 e 2.0) e “bar” (com a versão 0.1), você deve acabar com uma estrutura parecida com:

.
├── bar
│   └── bar-0.1.tar.gz
└── foo
    ├── Foo-1.0.tar.gz
    └── Foo-2.0.tar.gz

Assim que tiver esse layout, basta configurar seu servidor web para servir o diretório raiz com o autoindex habilitado. Para um exemplo usando o servidor Web embutido em Twisted, você simplesmente executaria twistd -n web --path . e então instruiria os usuários a adicionar a URL à configuração de seu instalador.

Projetos existentes

Projeto

Envio de pacotes

Padrão do PyPI [2]

Notas adicionais

devpi

múltiplos índices com herança, com sincronização, replicação, tolerância a falhas; espelhamento

simpleindex

pypiserver

pypiprivate

PyPI Cloud

sem manutenção; também faz proxy de cache; autenticação, autorização

pywharf

sem manutenção; serve arquivos no GitHub

Pulp-python

também espelhamento, proxy; plugin para Pulp

pip2pi

também espelhamento; sincronização manual

dumb-pypi

não é um servidor, mas um gerador de site de arquivo estático

http.server

biblioteca padrão

Apache

usando mod_rewrite e mod_cache_disk, você pode armazenar em cache as solicitações para índices de pacotes por meio de um servidor Apache