Эта проблема аналогична # 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
Подтверждено, здесь неправильное разрешение.
Итак: порядок имеет значение только при блокировке или использовании --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
похоже, решило проблему