Instalando as dependências de uma dependência local com pipenv

votos
0

fundo

Temos projeto com a seguinte estrutura de diretório de alto nível *

./datascience/
├── core
│   └── setup.py
├── notebooks
│   └── Pipfile
└── web
    └── Pipfile

* Excluídos todos os arquivos irrelevantes e diretórios para brevidade.

O corepacote é uma biblioteca. É uma dependência de ambos os notebookse webaplicações.

O corepacote, sendo uma biblioteca , tem suas dependências especificadas nosetup.py

import setuptools

setuptools.setup(
    install_requires=[
        'some-dependency',
        'another-dependency'
    ]
)

O webe notebooksaplicativos estão usando pipenv para gerenciamento de dependência. Suas dependências estão especificados em uma Pipfile.

Por exemplo, aqui está como as webdependências são especificados em web/Pipfile:

[packages]
datascience-core = {path = ./../core}
flask = ~= 1.0

Observe como a coredependência é uma dependência local, portanto, o caminho relativo.

Problema

Fazendo um pipenv installde dentro do o webou notebooksdiretório, não instala as dependências da corebiblioteca como eu esperava!

Eu também tentei usar um Pipfilepara core, esperando que pipenv iria buscá-lo em seu gráfico e baixar todas as dependências aninhadas. Mas isso não acontece.

Como pode dependências do coreaplicativo ser instalado automaticamente quando pipenv está instalando dependências para o webou notebooksaplicativo?

Publicado 27/11/2018 em 18:09
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Encontrou uma solução graças a este comentário em um segmento questão pipenv: https://github.com/pypa/pipenv/issues/209#issuecomment-337409290

Eu continuou listando os core's dependências setup.py.

Eu mudei o webe notebookaplicativos para usar um editável instalação do corepacote.
Isso foi feito através da execução do seguinte em ambos os webe notebooksdiretório:

pipenv install --editable ../core

Ele produziu este diff

[packages]
- datascience-core = {path = "./../core"}
+ datascience-core = {editable = true,path = "./../core"}

Agora em execução pipenv installa partir dos webe notebooksresultados de diretório na instalação do corepacote e suas dependências!

Ele também resolveu outro problema muito chato, que foi ter que pipenv installcada vez que havia uma mudança no core. Agora ele pega mudanças de desenvolvimento sem ter que re-instalar o pacote local!

Respondeu 27/11/2018 em 19:59
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more