Pipenv: Зависимость Git с отдельной ветвью переопределяется зависимостью от другого пакета.

Созданный на 8 мая 2018  ·  10Комментарии  ·  Источник: pypa/pipenv

Эта проблема аналогична # 1779, но заявленное решение не работает для меня.

Мне нужно установить конкретную версию пакета PyInstaller , но PyInstaller также является зависимостью от PyUpdater которая также требуется в моем проекте и отменяет другие мои конкретные PyInstaller версия.

$ python -m pipenv.help вывод:

python -m pipenv.help

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

Я знаю, что этот вывод должен выглядеть не так, но я не могу заставить его работать. Здесь есть помощь? Я использую pipenv версии 11.0.2.


Ожидаемый результат

Мне нужна последняя ветка develop PyInstaller, и я не хочу, чтобы PyUpdater переопределял ее с помощью версии PyInstaller-3.3.1 . Как было предложено в # 1779, я поместил PyUpdater над PyInstaller в [packages] в Pipfile.

Фактический результат

Независимо от того, выглядит ли важная часть Pipfile так:

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

или вот так:

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

версия PyInstaller в Pipfile.lock будет 3.3.1 и я установил эту версию.

Интересно то, что если я удалю PyInstaller с помощью pipenv uninstall pyinstaller а затем снова установлю его с помощью pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip я получу Successfully installed PyInstaller-3.4.dev0+b31794cf1 но на самом деле установленная версия 3.3.1 вместо.

Шаги по воспроизведению
# 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
Проверить версию: pipenv run pyinstaller --version

или же

Создать новую чистую среду
pipenv install pyupdater
pipenv uninstall pyinstaller
pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
Проверить версию: pipenv run pyinstaller --version

Dependency Resolution Type

Все 10 Комментарий

Подтверждено, здесь неправильное разрешение.

Итак: порядок имеет значение только при блокировке или использовании --sequential , а zip-файлы никогда не будут разрешены должным образом, я думаю ... вы можете попробовать использовать -e но я не уверен, что это сработает. Установка выполняется одновременно, поэтому порядок файлов pipfile мало что дает.

Зависимость верхнего уровня всегда должна побеждать, однако, ИМО. PyInstaller указывается в файле Pipfile (то есть на верхнем уровне), поэтому информация о его версии не должна переопределяться спецификацией зависимостей PyUpdater. Было бы разумно вызвать исключение, если оно не может разрешиться разумно, но не игнорирует его.

Что он делает на мастере

Он разрешает PyInstaller до версии на PyPI, как того требует PyUpdater. Вот что у меня получилось в 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 попробуйте его против ветки с обновленным

То же самое с bugfix / 2260: / ( pipenv lock --clear )

Я только заметил, что это не устанавливается в редактируемом режиме - мы не поддерживаем разрешение зависимостей для вещей, которые не находятся в редактируемом режиме, потому что у нас нет видимости графа зависимостей

Ах, думаю, я знаю, почему это происходит!

Привет. Я упоминал об этом вчера в Slack. Я считаю, что это ошибка, с которой я столкнулся.

Пакеты Pipfile выглядят так:

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

Сначала все блокировалось, как и ожидалось, с пакетами bar поступающими из github. После запуска pipenv update bar обновился и добавил foo в качестве зависимости. Впоследствии при блокировке foo было преобразовано в версию PyPI.

Добавление editable= True похоже, решило проблему

Была ли эта страница полезной?
0 / 5 - 0 рейтинги