Pipenv: Die Git-Abhängigkeit mit dem getrennten Zweig wird durch die Abhängigkeit eines anderen Pakets überschrieben.

Erstellt am 8. Mai 2018  ·  10Kommentare  ·  Quelle: pypa/pipenv

Dieses Problem ähnelt # 1779, aber die dort angegebene Lösung funktioniert bei mir nicht.

Ich muss eine bestimmte Version eines PyInstaller -Pakets installieren, aber PyInstaller ist auch eine Abhängigkeit von PyUpdater die auch in meinem Projekt erforderlich ist und andere meiner spezifischen PyInstaller überschreibt

$ python -m pipenv.help Ausgabe:

python -m pipenv.help

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

Ich bin mir bewusst, dass diese Ausgabe nicht so aussehen sollte, aber ich kann sie nicht zum Laufen bringen. Hilfe hier? Ich bin auf pipenv Version 11.0.2.


Erwartetes Ergebnis

Ich benötige den neuesten develop -Zweig von PyInstaller und möchte nicht, dass PyUpdater dies mit der PyInstaller-3.3.1 -Version überschreibt. Wie in # 1779 vorgeschlagen, habe ich PyUpdater in Pipfile in [packages] über dem PyInstaller platziert.

Tatsächliche Ergebnis

Unabhängig davon, ob der wichtige Teil von Pipfile so aussieht:

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

oder so:

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

Die PyInstaller-Version in Pipfile.lock ist 3.3.1 und am Ende ist diese Version installiert.

Interessant ist, dass wenn ich PyInstaller mit pipenv uninstall pyinstaller deinstalliere und es dann mit pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip erneut installiere, ich die Successfully installed PyInstaller-3.4.dev0+b31794cf1 bekomme, aber tatsächlich die 3.3.1 Version installiert stattdessen.

Schritte zum Replizieren
# 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
Überprüfen Sie die Version: pipenv run pyinstaller --version

oder

Erstellen Sie eine neue saubere Umgebung
pipenv install pyupdater
pipenv uninstall pyinstaller
pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
Überprüfen Sie die Version: pipenv run pyinstaller --version

Dependency Resolution Type

Alle 10 Kommentare

Bestätigt, die Auflösung ist hier falsch.

Ok, also: Ordnung ist nur wichtig, wenn --sequential gesperrt oder verwendet wird, und Zip-Dateien werden nie richtig aufgelöst. Ich denke ... Sie können versuchen, -e aber ich bin nicht sicher, ob dies funktioniert. Die Installation erfolgt gleichzeitig, sodass die Reihenfolge der Pipfiles nicht viel bewirkt.

Top-Level-Abhängigkeit sollte jedoch immer IMO gewinnen. PyInstaller wird in der Pip-Datei angegeben (dh auf oberster Ebene), sodass die Versionsinformationen nicht durch die Abhängigkeitsspezifikation von PyUpdater überschrieben werden sollten. Es kann sinnvoll sein, eine Ausnahme auszulösen, wenn sie nicht angemessen behoben, aber nicht stillschweigend überschrieben werden kann.

Was macht es auf Master

PyInstaller wird gemäß PyUpdater in die Version auf PyPI aufgelöst. Folgendes habe ich unter Windows erhalten:

{
    "_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 versuchen Sie es gegen den Zweig mit der aktualisierten Anforderungslib

Das gleiche gilt für Bugfix / 2260: / ( pipenv lock --clear )

Ich stelle nur fest, dass dies nicht im bearbeitbaren Modus installiert wird. Wir unterstützen keine Abhängigkeitsauflösung für Dinge, die sich nicht im bearbeitbaren Modus befinden, da wir keinen Einblick in das Abhängigkeitsdiagramm haben

Ah, ich glaube ich weiß warum das passiert!

Hallo. Ich habe das gestern auf Slack erwähnt. Ich glaube, das ist der Fehler, auf den ich gestoßen bin.

Die Pipfile -Pakete sehen folgendermaßen aus:

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

Zuerst wurde alles wie erwartet mit den bar -Paketen von Github gesperrt. Nach dem Ausführen eines pipenv update bar foo aktualisiert und als Abhängigkeit foo in die PyPI-Version aufgelöst.

Das Hinzufügen von editable= True scheint das Problem behoben zu haben

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen