versucht, flower
zum Projekt hinzuzufügen, aber pipenv lock
wählt die neueste tornado
-Version (5.1) statt einer in den Anforderungen (tornado>=4.2.0,<5.0.0 ) (getestet am 2.7.15 & 3.7)
richtige Tornado-Version ausgewählt werden
$ mkdir tmp1
$cd tmp1
$ pipenv Blume installieren
$ pipenv --support
Pipenv-Version: '2018.7.1'
Pipenv-Standort: '/Users/jerzyk/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pipenv'
Python-Speicherort: '/Users/jerzyk/.pyenv/versions/3.7.0/bin/python3.7'
Andere Python-Installationen in PATH
:
2.7
: /usr/local/bin/python2.7
2.7
: /Users/jerzyk/.pyenv/shims/python2.7
2.7
: /usr/local/bin/python2.7
2.7
: /usr/local/bin/python2.7
2.7
: /usr/bin/python2.7
3.6
: /Users/jerzyk/.pyenv/shims/python3.6
3.7
: /Users/jerzyk/.pyenv/versions/3.7.0/bin/python3.7m
3.7
: /Users/jerzyk/.pyenv/versions/3.7.0/bin/python3.7
3.7
: /Users/jerzyk/.pyenv/shims/python3.7
3.7
: /usr/local/bin/python3.7
3.7
: /usr/local/bin/python3.7
3.7.0
: /Users/jerzyk/.pyenv/versions/3.7.0/bin/python
3.7.0
: /Users/jerzyk/.pyenv/shims/python
2.7.15
: /usr/local/bin/python
2.7.15
: /usr/local/bin/python
2.7.10
: /usr/bin/python
None
: /Users/jerzyk/.pyenv/shims/python2
2.7.15
: /usr/local/bin/python2
2.7.15
: /usr/local/bin/python2
3.7.0
: /Users/jerzyk/.pyenv/versions/3.7.0/bin/python3
3.7.0
: /Users/jerzyk/.pyenv/shims/python3
3.7.0
: /usr/local/bin/python3
3.7.0
: /usr/local/bin/python3
PEP 508-Informationen:
{'implementation_name': 'cpython',
'implementation_version': '3.7.0',
'os_name': 'posix',
'platform_machine': 'x86_64',
'platform_python_implementation': 'CPython',
'platform_release': '17.7.0',
'platform_system': 'Darwin',
'platform_version': 'Darwin Kernel Version 17.7.0: Thu Jun 21 22:53:14 PDT '
'2018; root:xnu-4570.71.2~1/RELEASE_X86_64',
'python_full_version': '3.7.0',
'python_version': '3.7',
'sys_platform': 'darwin'}
Systemumgebungsvariablen:
TERM_PROGRAM
PYENV_ROOT
TERM
SHELL
TMPDIR
Apple_PubSub_Socket_Render
TERM_PROGRAM_VERSION
TERM_SESSION_ID
PYENV_VERSION
USER
SSH_AUTH_SOCK
PYENV_DIR
__CF_USER_TEXT_ENCODING
PATH
PWD
LANG
PGHOST
ITERM_PROFILE
PYENV_HOOK_PATH
XPC_FLAGS
XPC_SERVICE_NAME
SHLVL
HOME
COLORFGBG
ITERM_SESSION_ID
LOGNAME
PGDATA
DISPLAY
COLORTERM
PYTHONDONTWRITEBYTECODE
PIP_PYTHON_PATH
Pipenv-spezifische Umgebungsvariablen:
Debug-spezifische Umgebungsvariablen:
PATH
: /Users/jerzyk/.pyenv/versions/3.7.0/bin:/usr/local/Cellar/pyenv/1.2.6/libexec:/Users/jerzyk/.pyenv/shims:/usr/local/bin:/usr/local/sbin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/MacGPG2/bin
SHELL
: /bin/bash
LANG
: en_US.UTF-8
PWD
: /Users/jerzyk/tmp
Inhalt von Pipfile
('/Users/jerzyk/tmp/Pipfile'):
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
flower = "*"
[dev-packages]
[requires]
python_version = "3.7"
Inhalt von Pipfile.lock
('/Users/jerzyk/tmp/Pipfile.lock'):
{
"_meta": {
"hash": {
"sha256": "e224f38cf9f41ab210a6546986368cfee3a9087dc1c0d756024e2f6aea1f7e9a"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.7"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"amqp": {
"hashes": [
"sha256:073dd02fdd73041bffc913b767866015147b61f2a9bc104daef172fc1a0066eb",
"sha256:eed41946890cd43e8dee44a316b85cf6fee5a1a34bb4a562b660a358eb529e1b"
],
"version": "==2.3.2"
},
"babel": {
"hashes": [
"sha256:6778d85147d5d85345c14a26aada5e478ab04e39b078b0745ee6870c2b5cf669",
"sha256:8cba50f48c529ca3fa18cf81fa9403be176d374ac4d60738b839122dfaaa3d23"
],
"version": "==2.6.0"
},
"billiard": {
"hashes": [
"sha256:ed65448da5877b5558f19d2f7f11f8355ea76b3e63e1c0a6059f47cfae5f1c84"
],
"version": "==3.5.0.4"
},
"celery": {
"hashes": [
"sha256:77dab4677e24dc654d42dfbdfed65fa760455b6bb563a0877ecc35f4cfcfc678",
"sha256:ad7a7411772b80a4d6c64f2f7f723200e39fb66cf614a7fdfab76d345acc7b13"
],
"version": "==4.2.1"
},
"flower": {
"hashes": [
"sha256:a7a828c2dbea7e9cff1c86d63626f0eeb047b1b1e9a0ee5daad30771fb51e6d0"
],
"index": "pypi",
"version": "==0.9.2"
},
"kombu": {
"hashes": [
"sha256:86adec6c60f63124e2082ea8481bbe4ebe04fde8ebed32c177c7f0cd2c1c9082",
"sha256:b274db3a4eacc4789aeb24e1de3e460586db7c4fc8610f7adcc7a3a1709a60af"
],
"version": "==4.2.1"
},
"pytz": {
"hashes": [
"sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053",
"sha256:ffb9ef1de172603304d9d2819af6f5ece76f2e85ec10692a524dd876e72bf277"
],
"version": "==2018.5"
},
"tornado": {
"hashes": [
"sha256:1c0816fc32b7d31b98781bd8ebc7a9726d7dce67407dc353a2e66e697e138448",
"sha256:4f66a2172cb947387193ca4c2c3e19131f1c70fa8be470ddbbd9317fd0801582",
"sha256:5327ba1a6c694e0149e7d9126426b3704b1d9d520852a3e4aa9fc8fe989e4046",
"sha256:6a7e8657618268bb007646b9eae7661d0b57f13efc94faa33cd2588eae5912c9",
"sha256:a9b14804783a1d77c0bd6c66f7a9b1196cbddfbdf8bceb64683c5ae60bd1ec6f",
"sha256:c58757e37c4a3172949c99099d4d5106e4d7b63aa0617f9bb24bfbff712c7866",
"sha256:d8984742ce86c0855cccecd5c6f54a9f7532c983947cff06f3a0e2115b47f85c"
],
"markers": "python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.3.*' and python_version != '3.0.*' and python_version >= '2.7'",
"version": "==5.1"
},
"vine": {
"hashes": [
"sha256:52116d59bc45392af9fdd3b75ed98ae48a93e822cee21e5fda249105c59a7a72",
"sha256:6849544be74ec3638e84d90bc1cf2e1e9224cc10d96cd4383ec3f69e9bce077b"
],
"version": "==1.1.4"
}
},
"develop": {}
}
```[[Quelle]]
url = " https://pypi.org/simple "
verify_ssl = wahr
name = "pypi"
[Pakete]
Blume = "*"
[dev-Pakete]
Tornado = "<5"
[erfordert]
python_version = "3.7"
```
Diese Datei reproduziert das Problem. pipenv lock
scheint packages
und dev-packages
in verschiedenen Phasen zu sperren. Wenn es herausfindet, dass flower
von tornado>=4.2.0
#$ abhängt, ignoriert es die in dev-packages
definierte Einschränkung und installiert Tornado 5. Das Ausführen pipenv lock -d
hilft auch nicht.
Als Problemumgehung musste ich alle [dev-packages]-Anforderungen nach [packages] verschieben. Oder ich denke, ich hätte alle [Pakete]-Einträge in [dev-packages] duplizieren können.
Entschuldigen Sie die Verspätung, um Ihnen allen zu antworten, um zumindest einen Teil der Anfrage zu beantworten, dev-packages
nehmen Sie packages
in den Hintergrund, um zu verhindern, dass Sie sich versehentlich in einer Umgebung entwickeln, die überhaupt nichts widerspiegelt Sie setzen ein.
Da Sie hier ein Top-Level-Paket haben, das von tornado
( flower
) abhängt, und eine strikte Einschränkung, welche Version von Tornado installiert werden darf, ist es ziemlich wahrscheinlich, dass Sie das anheften möchten Tornado-Eintrag in packages
da es so oder so installiert wird. Wenn der Versions-Pin bedingt ist, sollten Sie erwägen, einen Umgebungsmarker hinzuzufügen.
Grob gesagt besagt dieses Pipfile
, dass Sie Tornado 5.x
in der Produktion, aber <5
in der Entwicklung verwenden werden, was etwas ist, um das herum wir entworfen haben (dh dies war eine Designentscheidung -- wenn Sie keine Umgebungsmarkierungen verwenden, stimmen Ihre lokalen Abhängigkeiten mit denen in der Produktion überein, egal was passiert).
Da dieses spezielle Problem der Abhängigkeitsauflösung eine Entwurfsentscheidung ist, müssen Sie Ihre Anforderung in den Abschnitt packages
verschieben und Umgebungsmarkierungen verwenden
Hilfreichster Kommentar
```[[Quelle]]
url = " https://pypi.org/simple "
verify_ssl = wahr
name = "pypi"
[Pakete]
Blume = "*"
[dev-Pakete]
Tornado = "<5"
[erfordert]
python_version = "3.7"
```
Diese Datei reproduziert das Problem.
pipenv lock
scheintpackages
unddev-packages
in verschiedenen Phasen zu sperren. Wenn es herausfindet, dassflower
vontornado>=4.2.0
#$ abhängt, ignoriert es die indev-packages
definierte Einschränkung und installiert Tornado 5. Das Ausführenpipenv lock -d
hilft auch nicht.