Pipenv

É uma ferramenta que melhora algumas funcionalidades do conjunto Pip e Virtualenv.

O pipenv cria, por padrão, a pasta de ambiente virtual na pasta interna dele. Para alterar esse caminho, você deve alterar o arquivo .bashrc no linux ou as variáveis de ambiente no windows.

Outra solução (funcionou no windows) é criar uma pasta chamada ‘.venv’ na raiz do projeto e o pipenv usará essa pasta.

Dentro do arquivo .bashrc, escrever o seguinte comando: export PIPENV_VENV_IN_PROJECT=1


Alguns comandos e seus comportamentos:

pipenv install django → Cria o ambiente virtual e instala o django, o arquivo Pipfile e o Pipfile.lock

Arquivo Pipfile → É o arquivo de configuração do pipenv

[[source]]
url = "<https://pypi.org/simple>"
verify_ssl = true # verificação de segurança das dependências, garatindo que os pacotes instalados são os que realmente você quer instalar, por assinatura pictografica.
name = "pypi"

[packages]
django = "*" # instalação genérica, sem especificar a versão

[dev-packages]
flake8 = "*" # instalação genérica, sem especificar a versão

[requires]
python_version = "3.10" # versão de python definida

Arquivo .lock → garante o building determinístico, com as bibliotecas em suas versões bem definidas.

{
    "_meta": {
        "hash": {
            "sha256": "b6e007a418d4b6b8afda6cf3410b6f7fa0fa004ffa1489e0d7f65c309e559f9c"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.10"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "<https://pypi.org/simple>",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "asgiref": {
            "hashes": [
                "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e",
                "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"
            ],
            "markers": "python_version >= '3.7'",
            "version": "==3.7.2"
        },
        "django": {
            "hashes": [
                "sha256:2a6b6fbff5b59dd07bef10bcb019bee2ea97a30b2a656d51346596724324badf",
                "sha256:672b3fa81e1f853bb58be1b51754108ab4ffa12a77c06db86aa8df9ed0c46fe5"
            ],
            "index": "pypi",
            "version": "==4.2.2"
        },
        "sqlparse": {
            "hashes": [
                "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3",
                "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"
            ],
            "markers": "python_version >= '3.5'",
            "version": "==0.4.4"
        },
        "typing-extensions": {
            "hashes": [
                "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26",
                "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"
            ],
            "markers": "python_version < '3.11'",
            "version": "==4.6.3"
        }
    },
    "develop": {
        "flake8": {
            "hashes": [
                "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7",
                "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"
            ],
            "index": "pypi",
            "version": "==6.0.0"
        },
        "mccabe": {
            "hashes": [
                "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325",
                "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"
            ],
            "markers": "python_version >= '3.6'",
            "version": "==0.7.0"
        },
        "pycodestyle": {
            "hashes": [
                "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053",
                "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"
            ],
            "markers": "python_version >= '3.6'",
            "version": "==2.10.0"
        },
        "pyflakes": {
            "hashes": [
                "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf",
                "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"
            ],
            "markers": "python_version >= '3.6'",
            "version": "==3.0.1"
        }
    }
}

Para instalar uma dependência, o pipenv permite instalar diretamente no ambiente de desenvolvimento, usando o comando: pipenv install --dev "nome da lib"

[[source]]
url = "<https://pypi.org/simple>"
verify_ssl = true # verificação de segurança das dependências, garatindo que os pacotes instalados são os que realmente você quer instalar, por assinatura pictografica.
name = "pypi"

[packages]
django = "*" # instalação genérica, sem especificar a versão

[dev-packages]
flake8 = "*" # instalação genérica, sem especificar a versão

[requires]
python_version = "3.10" # versão de python definida

pipenv install → cria o ambiente virtual e instala as dependencias do projeto

pipenv sync -d → permite criar o ambiente virtual e baixar as dependencias de desenvolvimento direto do arquivo pipfile.lock (inclui as dependências de dev e do projeto)

pipenv shell → ativa o ambiente virtual

exit → desativa o ambiente virtual

flake8 . → roda o flake8