Pipenv: A dependência do Git com branch separado é substituída pela dependência de outro pacote.

Criado em 8 mai. 2018  ·  10Comentários  ·  Fonte: pypa/pipenv

Este problema é semelhante ao # 1779, mas a solução indicada não está funcionando para mim.

Preciso instalar uma versão específica de um pacote PyInstaller , mas PyInstaller também é uma dependência de PyUpdater que também é necessária em meu projeto e substitui outros meus PyInstaller version.

Saída de $ python -m pipenv.help :

python -m pipenv.help

C:\Program Files (x86)\Python36-32\python.exe: No module named pipenv.help

Estou ciente de que essa saída não deve ser assim, mas não consigo fazer com que funcione. Alguma ajuda aqui? Estou no pipenv versão 11.0.2.


Resultado esperado

Preciso do último develop branch do PyInstaller instalado e não quero que o PyUpdater substitua isso pela versão PyInstaller-3.3.1 . Como sugerido em # 1779, coloquei PyUpdater acima do PyInstaller em [packages] no Pipfile.

Resultado atual

Independentemente de a parte importante do Pipfile ser assim:

PyUpdater = "*"
PyInstaller = {git = "https://github.com/pyinstaller/pyinstaller", ref = "develop"}

ou assim:

PyInstaller = {git = "https://github.com/pyinstaller/pyinstaller", ref = "develop"}
PyUpdater = "*"

a versão do PyInstaller em Pipfile.lock será 3.3.1 e acabo com esta versão instalada.

O que é interessante é que se eu desinstalar o PyInstaller com pipenv uninstall pyinstaller e, em seguida, instalá-lo novamente com pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip , obtenho o Successfully installed PyInstaller-3.4.dev0+b31794cf1 mas na verdade a versão 3.3.1 instalada em vez de.

Passos para replicar
# Pipfile
[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]
PyUpdater = "*"
PyInstaller = {git = "https://github.com/pyinstaller/pyinstaller", ref = "develop"}

pipenv install
Verifique a versão: pipenv run pyinstaller --version

ou

Crie um novo ambiente limpo
pipenv install pyupdater
pipenv uninstall pyinstaller
pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
Verifique a versão: pipenv run pyinstaller --version

Dependency Resolution Type

Todos 10 comentários

Confirmado, a resolução está errada aqui.

Ok, então: o pedido só importa ao bloquear ou usar --sequential , e zipfiles nunca serão resolvidos corretamente, eu acho ... você pode tentar usar -e mas não tenho certeza se isso funciona. A instalação é simultânea, portanto a ordem do pipfile não fará muito.

Dependência de nível superior sempre deve vencer, no entanto, IMO. PyInstaller é especificado no Pipfile (ou seja, nível superior), portanto, suas informações de versão não devem ser substituídas pela especificação de dependência de PyUpdater. Pode ser sensato levantar uma exceção se ela não puder resolver razoavelmente, mas não anular silenciosamente.

O que isso faz no mestre

Ele resolve o PyInstaller para a versão no PyPI, conforme exigido pelo PyUpdater. Aqui está o que tenho no Windows:

{
    "_meta": {
        "hash": {
            "sha256": "c0d9cbadaa9e85bb1b87408b1e0b428414754623d472d64deb2a5bd69ff9bf2c"
        },
        "pipfile-spec": 6,
        "requires": {},
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "altgraph": {
            "hashes": [
                "sha256:49dc134049903cc73fb76ca3cc9bef5b2b8c01c28732dd29594f99af2b449fc5",
                "sha256:fc28b986a68fde8d3ff0e6d6ba3fbdd2cd562d11d45ef7c7735fbd826c9eec2e"
            ],
            "version": "==0.15"
        },
        "appdirs": {
            "hashes": [
                "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92",
                "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"
            ],
            "version": "==1.4.3"
        },
        "bsdiff4": {
            "hashes": [
                "sha256:5a022ff4c1d1de87232b1c70bde50afbb98212fd246be4a867d8737173cf1f8f"
            ],
            "version": "==1.1.4"
        },
        "certifi": {
            "hashes": [
                "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
                "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
            ],
            "version": "==2018.4.16"
        },
        "chardet": {
            "hashes": [
                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
            ],
            "version": "==3.0.4"
        },
        "dsdev-utils": {
            "hashes": [
                "sha256:cbe18eb0104b56e19087d60b765d7875b114acce01b1aceca9120f0556ab109d"
            ],
            "version": "==0.9.6"
        },
        "ed25519": {
            "hashes": [
                "sha256:2991b94e1883d1313c956a1e3ced27b8a2fdae23ac40c0d9d0b103d5a70d1d2a"
            ],
            "version": "==1.4"
        },
        "future": {
            "hashes": [
                "sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
            ],
            "version": "==0.16.0"
        },
        "macholib": {
            "hashes": [
                "sha256:7f76a7ef4f58f85889dec25fb532bad5acfd461c444738dfeb2e7bf855d5906b",
                "sha256:9aeec52d7da59912b15445d08b08d95cee48414f01dd035be06f04a825973c08"
            ],
            "version": "==1.9"
        },
        "pbr": {
            "hashes": [
                "sha256:3747c6f017f2dc099986c325239661948f9f5176f6880d9fdef164cb664cd665",
                "sha256:a9c27eb8f0e24e786e544b2dbaedb729c9d8546342b5a6818d8eda098ad4340d"
            ],
            "version": "==4.0.4"
        },
        "pefile": {
            "hashes": [
                "sha256:675c35ee0e1677db9e80d2f48d8a7ff2cf38e6207e8cd5e2a2c6d126db025854"
            ],
            "version": "==2017.11.5"
        },
        "pyinstaller": {
            "hashes": [
                "sha256:715f81f24b1ef0e5fe3b3c71e7540551838e46e9de30882aa7c0a521147fd1ce"
            ],
            "version": "==3.3.1"
        },
        "pypiwin32": {
            "hashes": [
                "sha256:67adf399debc1d5d14dffc1ab5acacb800da569754fafdc576b2a039485aa775",
                "sha256:71be40c1fbd28594214ecaecb58e7aa8b708eabfa0125c8a109ebd51edbd776a"
            ],
            "version": "==223"
        },
        "pyupdater": {
            "hashes": [
                "sha256:61e796063131bcde4e2467580c0add3a2e77cd0b0533a1b559f066e4c127570e"
            ],
            "index": "pypi",
            "version": "==2.5.3"
        },
        "pywin32": {
            "hashes": [
                "sha256:0df9b008caef10af0d674c483316c28dcf78391332d9d5d380fab667ebf2d7d1",
                "sha256:249391eb924b8376826e6f84d143d1dcc0e400b238b511d5fbd3811f6ed9ad50",
                "sha256:42f48567e36b787901ff3da20de5a134cd9880cc90832e2aad60951f058699f0",
                "sha256:9eff897796c9d76a213134257a01b6f8a122c55e0772847fba313a8091f3ec44",
                "sha256:c7ea0deabcc324e5b74084b5452003109c592d1aedbe9e9289ed55b26d9b0c7f",
                "sha256:da422d4067d98b49fbb19d851900a5fc38c61eab0ee803574c27c42309173ebe",
                "sha256:f0f0e7c82ee334dd6e888b9b5beb05fd8947355fa7a15644c810bb4ea0079ca6",
                "sha256:fb3c85907918fd01a72ee146d323d220771dee151c0cfa5630c2f35797ffb116"
            ],
            "version": "==223"
        },
        "six": {
            "hashes": [
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
            ],
            "version": "==1.11.0"
        },
        "stevedore": {
            "hashes": [
                "sha256:e3d96b2c4e882ec0c1ff95eaebf7b575a779fd0ccb4c741b9832bed410d58b3d",
                "sha256:f1c7518e7b160336040fee272174f1f7b29a46febb3632502a8f2055f973d60b"
            ],
            "version": "==1.28.0"
        },
        "urllib3": {
            "hashes": [
                "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
                "sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
            ],
            "version": "==1.22"
        }
    },
    "develop": {}
}

@uranusjr tente contra o branch com o requirementslib atualizado

O mesmo com bugfix / 2260: / ( pipenv lock --clear )

Estou apenas percebendo que isso não está sendo instalado no modo editável - não oferecemos suporte à resolução de dependência para coisas que não estão no modo editável porque não temos visibilidade no gráfico de dependência

Ah, acho que sei porque isso está acontecendo!

Olá. Eu mencionei isso ontem. Acredito que seja esse o bug que encontrei.

Os pacotes de Pipfile aparência:

[packages]
foo = "*"
bar = {git = "https://github.com/bar/bar", ref = "bar"}

No início, tudo estava travando conforme o esperado com os pacotes bar vindos do github. Depois de executar um pipenv update bar foi atualizado e adicionou foo como uma dependência. Posteriormente, ao travar, foo foi resolvido para a versão PyPI.

Adicionar editable= True parece ter resolvido o problema

Esta página foi útil?
0 / 5 - 0 avaliações