Parece que o Pipfile / Pipfile.lock pretende substituir o requirements.txt, no contexto do empacotamento do Python. Entretanto, não há muita documentação sobre como eles realmente funcionam. Encontrei uma descrição em evolução do pipfile na seção PyPi do site Python aqui, mas é bastante confusa e não explica a semântica das diferentes seções do arquivo.
Alguma dica sobre como entender esses arquivos?
Gemfile
eGemfile.lock
do mundo Ruby: O.lock
arquivo possui versões específicas para cada dependência; aquele sem essa extensão tem apenas as versões conhecidas por controlar seres humanos. Dito isto, pedir uma explicação de algo que ainda está evoluindo e muito longe de ser bem definido, muito menos padronizado, talvez seja um pouco prematuro.Pipfile
erequirements.txt
é em grande parte o fato de o primeiro tentar adotar recursos do mundo Ruby, ou seja, poder especificar conjuntos de dependências para vários ambientes e com condições / opções / etc dentro de um único arquivo).Respostas:
O conceito por trás desses arquivos é simples e análogo a outras ferramentas já existentes, se você tiver alguma familiaridade com o Ruby Bundler ou o Npm do Node.
Pipenv
é uma ferramenta de gerenciamento de pacotes e de ambiente virtual que usa os arquivos Pipfile e Pipfile.lock para atingir esses objetivos.O Pipenv lida com o ambiente virtual para você de uma maneira padrão padrão (não é mais necessário ativar e desativar). Abaixo, alguns princípios básicos para você começar, veja mais no site pipenv .
Começando
Comece a usar o pipenv é fácil, no tipo de pasta do seu projeto ...
... e se já tiver um
requirements.txt
arquivo, ele gerará umPipfile
arquivo com os requisitos e uma pasta do ambiente virtual; caso contrário, ele gerará umPipfile
arquivo vazio . Se você não gostou ou mudou de idéia sobre algo que instalou, basta digitar ...... e você está pronto para ir. Para ativar o ambiente virtual que o pipenv já gerou, vá com ...
... e seu ambiente virtual será ativado. Para deixar o meio ambiente ...
... e você voltará à sua sessão original do terminal.
Pipfile
O arquivo Pipfile destina-se a especificar os requisitos de pacotes para seu aplicativo ou biblioteca Python, tanto para desenvolvimento quanto para execução. Você pode instalar um pacote usando simplesmente ...
... e será adicionado como uma dependência para implantação e execução ou usando ...
... e será usado como uma dependência para o tempo de desenvolvimento. A sintaxe do arquivo é bastante simples, como segue.
Pipfile.lock
O Pipfile.lock pretende especificar, com base nos pacotes presentes no Pipfile , qual versão específica deles deve ser usada, evitando os riscos de atualizar automaticamente pacotes que dependem um do outro e quebrar a árvore de dependência do projeto.
Você pode bloquear seus pacotes atualmente instalados usando ...
... e a ferramenta pesquisará sua pasta do ambiente virtual para gerar o arquivo de bloqueio automaticamente, com base nas versões atualmente instaladas. A sintaxe do arquivo não é tão óbvia quanto no Pipfile ; portanto, por uma questão de concisão, ela não será exibida aqui.
fonte
[[source]]
, como é a fonte dos pacotes baixados pelo pipenv ou algo mais? Eu acho que o restante dos dois arquivos é óbvio o suficiente.Pipfile
. Se algo ocorrer em uma atualização de pacote, é possível corrigi-lo revisando o histórico da versão do pacote e, de fato, um dos criadores da biblioteca de solicitações recomenda fazê-lo aqui .--skip-lock
flag para forçá-lo a ignorar oPipfile.lock
arquivo em vez de forçá-lo a usá-lo;)