Repositório pypi local com devpi-server

Este tutorial compreende a instalação para ambiente de desenvolvimento, para produção siga este tutorial Configurando repositório pypi na rede interna

Instalar devpi-server e dependências

$ pip install -U devpi-web devpi-server devpi

Comandos devpi-server

Iniciar devpi-server 1ª vez

O comando abaixo iniciará o devpi-server com uma interface web em: http://localhost:3141, e criará um repositório local para acesso off-line.
$ devpi-server --start --init

Iniciar devpi-server

$ devpi-server --start

Parar devpi-server

$ devpi-server --stop

Recriar indice de busca para devpi-server

$ devpi-server --recreate-search-index

Criar relação de pacotes do repositório local

Abaixo do twine acrescente todos os outros pacotes necessários para acesso off-line.
$ cat > ~/requirements.txt<< eof
pip
wheel
eggs
pytest
twine
eof

Exemplo

$ cat > ~/requirements.txt<< eof
pip
wheel
eggs
pytest
twine
incolumepy.exceptions>=0.3.0
incolumepy.saj-projects>=3.1.1.dev20181025
incolumepy.sequencias<1.1
incolumepy.utils!=1.0.0,!=1.0.1,>= 0.9.3
eof

Atualizar o indice de pacotes

cat ~/requirements.txt |while read a; do pip install -U --index http://localhost:3141/root/pypi $a; done

Estrutura

Após Atualizar o indice de pacotes, será criado a arvore de diretórios ~/.devpi/server/+files/root/pypi/, com todos os pacotes referenciados em ~/requirements.txt, que estará disponível off-line conforme o servidor https://pypi.org.

O backup desta estrutura de diretório garante a recuperação dos pacotes no servidor pypi local, sem a necessidade de acesso web.

Backup dos pacotes

$ cd ~/
$ tar cvzf devpi_pct.tar.gz .devpi

Recuperando backup

$ devpi-server --serverdir=/opt/.devpi/ --start --init
$ devpi-server --serverdir=/opt/.devpi/ --stop
$ tar xvzf devpi_pct.tar.gz -C /opt
$ devpi-server --serverdir=/opt/.devpi/ --start

Disponibilizar o serviço em outra porta modo foreground

$ devpi-server --serverdir=/tmp/.devpi/ --port 8080

Disponibilizar o serviço em outra porta

$ devpi-server --serverdir=/tmp/.devpi/ --port 8080 --start

Disponibilizar acesso remoto

$ devpi-server --serverdir=/tmp/.devpi/ --port 8080 --host 0.0.0.0 --start

Gerenciar pacotes

Detalhes em: devpi - gerência de pacotes

Gerenciar Usuário

Detalhes em: Gerenciando Usuários devpi-client e Gerenciando Usuários devpi-client (part 2)

Gerenciar Novos Indices no repositório interno

Detalhes em: devpi index

Inserir pacotes no repositório interno

# Verificar se o servidor está ativo
$ devpi-server --status
$ devpi-server --serverdir=/tmp/.devpi/ --status

# Informar a url ao cliente
$ devpi use --set-cfg http://localhost:3141

# Verificar URL configurada
$ devpi use --urls

# Logar com o usuário administrador
$ devpi login root
$ [senha em branco]

# Criar o novo indice
$ devpi index -c root/incolumepy volatile=false

# Verificar indice criado
$ devpi use -l

# Ativar o indice criado
$ devpi use root/incolumepy

# Definir auto configuração do indice
$ devpi use --always-set-cfg=yes

# Carregamento de pacotes para o repositório interno
$ devpi upload --no-vcs --from-dir dist/
$ devpi upload --from-dir dist/incolumepy.saj_projects-3.1.1.dev20181024.tar.gz

# Listar pacotes do indice ativo
$ devpi list

Usar repositório interno

Volátil

# easy_install easy_install --index=http://192.168.25.23:8080/root/pypi/+simple/ unipy easy_install -U --index=http://192.168.25.23:8080/root/pypi/+simple/ unipy # pip pip install --index=http://192.168.25.23:8080/root/pypi/+simple/ unipy pip install -U --index=http://192.168.25.23:8080/root/pypi/+simple/ unipy

Perene

# easy_install cat > ~/.pydistutils.cfg << eof # $HOME/.pydistutils.cfg: [easy_install] index_url = http://localhost:3141/root/pypi/+simple/ eof $ easy_install pandas # pip $ mkdir ~/.pip $ cat ~/.pip/pip.conf << eof # $HOME/.pip/pip.conf [global] index-url = http://localhost:3141/root/pypi/+simple/ # diretiva necessária para pip search [search] index = http://localhost:3141/root/pypi/ eof $ pip install pandas # Ambientes com buildout $ cat > ~/.buildout/default.cfg<< eof [buildout] index = http://localhost:3141/root/pypi/+simple/ eof $ pip install pandas

Atualização do requiriments.txt

$ pip freeze |sort -u | tee -a requirements.txt

Exemplos de uso com pip

$ pip install -r requirements.txt
$ pip install -r requirements.txt -f ./path/to/packages
$ pip install -r requirements.txt -f file:///path/to/packages
$ pip install -r requirements.txt -i http://localhost/dev/test/+simple incolumepy.utils
$ pip install -r requirements.txt -i https://10.100.0.150/dev/test/+simple incolumepy.utils
$ pip install -r requirements.txt -i http://10.100.0.150/dev/test/+simple --trusted-host 10.100.0.150 incolumepy.utils

Referências

  • http://brito.blog.incolume.com.br/2014/12/configurando-repositorio-pypi-na-rede.html
  • https://devpi.net/docs/devpi/devpi/latest/%2Bd/index.html
  • https://devpi.net/docs/devpi/devpi/latest/+d/quickstart-releaseprocess.html#initializing-a-basic-server-and-index
  • http://brito.blog.incolume.com.br/2015/06/devpi-packages.html
  • http://brito.blog.incolume.com.br/2015/12/devpi-server-atualizar-o-indice-de-busca.html
  • http://brito.blog.incolume.com.br/2015/02/devpi-index.html
  • http://brito.blog.incolume.com.br/2015/02/devpi-index.html?m=0
  • http://brito.blog.incolume.com.br/2015/02/gerenciando-usuarios-devpi-client.html
  • http://brito.blog.incolume.com.br/2015/02/gerenciando-usuarios-devpi-client-part-2.html

Comentários