Pipenv: La dépendance Git avec une branche séparée est remplacée par la dépendance d'un autre package.

Créé le 8 mai 2018  ·  10Commentaires  ·  Source: pypa/pipenv

Ce problème est similaire à # 1779, mais la solution indiquée ne fonctionne pas pour moi.

J'ai besoin d'installer une version spécifique d'un package PyInstaller , mais PyInstaller est également une dépendance de PyUpdater qui est également requise dans mon projet et remplace les autres PyInstaller spécifiques

$ python -m pipenv.help sortie:

python -m pipenv.help

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

Je suis conscient que ce n'est pas à quoi devrait ressembler ce résultat, mais je ne peux pas le faire fonctionner. Une aide ici? Je suis sur la version 11.0.2 de pipenv.


Résultat attendu

J'ai besoin de la dernière branche develop de PyInstaller installée et je ne veux pas que PyUpdater remplace cela avec la version PyInstaller-3.3.1 . Comme suggéré dans # 1779, j'ai placé PyUpdater au-dessus de PyInstaller dans [packages] dans Pipfile.

Résultat actuel

Peu importe si la partie importante de Pipfile ressemble à ceci:

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

ou comme ça:

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

la version PyInstaller dans Pipfile.lock sera 3.3.1 et je me retrouve avec cette version installée.

Ce qui est intéressant, c'est que si je désinstalle PyInstaller avec pipenv uninstall pyinstaller et que je l'installe à nouveau avec pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip j'obtiens la version Successfully installed PyInstaller-3.4.dev0+b31794cf1 mais en fait la version 3.3.1 est installée au lieu.

Étapes à suivre pour répliquer
# 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
Vérifier la version: pipenv run pyinstaller --version

ou

Créer un nouvel environnement propre
pipenv install pyupdater
pipenv uninstall pyinstaller
pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
Vérifier la version: pipenv run pyinstaller --version

Dependency Resolution Type

Tous les 10 commentaires

Confirmé, la résolution est erronée ici.

Ok donc: l'ordre n'a d'importance que lors du verrouillage ou de l'utilisation de --sequential , et les fichiers zip ne seront jamais résolus correctement, je pense ... vous pouvez essayer d'utiliser -e mais je ne suis pas sûr que cela fonctionne. L'installation est simultanée, donc l'ordre des fichiers pip ne fera pas grand chose.

La dépendance au plus haut niveau devrait toujours gagner, cependant, l'OMI. PyInstaller est spécifié dans le Pipfile (c'est-à-dire au niveau supérieur), donc ses informations de version ne doivent pas être remplacées par la spécification de dépendance de PyUpdater. Il peut être judicieux de soulever une exception si elle ne peut pas raisonnablement être résolue, mais pas de la neutraliser silencieusement.

Que fait-il sur le maître

Il résout PyInstaller à la version sur PyPI, comme requis par PyUpdater. Voici ce que j'ai sous 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 essayez-le avec la branche avec le

La même chose avec bugfix / 2260: / ( pipenv lock --clear )

Je remarque juste que cela n'est pas installé en mode modifiable - nous ne prenons pas en charge la résolution des dépendances pour les éléments qui ne sont pas en mode modifiable car nous n'avons pas de visibilité sur le graphique de dépendances

Ah, je pense que je sais pourquoi cela se produit!

Bonjour. J'en ai parlé hier sur Slack. Je crois que c'est le bug que j'ai rencontré.

Les packages Pipfile ressemblent à ceci:

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

Au début, tout se bloquait comme prévu avec les paquets bar provenant de github. Après avoir exécuté un pipenv update bar été mis à jour et ajouté foo tant que dépendance. Ensuite, lors du verrouillage, foo été résolu vers la version PyPI.

L'ajout de editable= True semble avoir résolu le problème

Cette page vous a été utile?
0 / 5 - 0 notes