Pipenv: dependencias incorrectas (versiones) bloqueadas por pip

Creado en 13 ago. 2018  ·  3Comentarios  ·  Fuente: pypa/pipenv

intenté agregar flower al proyecto, pero pipenv lock está eligiendo la versión más nueva tornado (5.1) en lugar de una especificada en los requisitos (tornado>=4.2.0,<5.0.0 ) (probado en 2.7.15 y 3.7)

Resultado Esperado

versión apropiada del tornado para ser elegido

Pasos para replicar

$ mkdir tmp1
$ cd tmp1
$ pipenv instalar flor


$ pipenv --soporte

Versión de Pipenv: '2018.7.1'

Ubicación de Pipenv: '/Users/jerzyk/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pipenv'

Ubicación de Python: '/Users/jerzyk/.pyenv/versions/3.7.0/bin/python3.7'

Otras instalaciones de Python en 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 Información:

{'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'}

Variables de entorno del sistema:

  • 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

Variables de entorno específicas de Pipenv:

Variables de entorno específicas de depuración:

  • 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

Contenido de 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"

Contenido de 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": {}
}

Comentario más útil

```[[fuente]]
url = " https://pypi.org/simple "
verificar_ssl = verdadero
nombre = "pypi"

[paquetes]
flor = "*"

[paquetes de desarrollo]
tornado = "<5"

[requiere]
versión_python = "3.7"
```

Este archivo reproduce el problema. pipenv lock parece bloquear packages y dev-packages en diferentes etapas. Cuando descubre que flower depende de tornado>=4.2.0 ignora la restricción definida en dev-packages e instala tornado 5. Ejecutar pipenv lock -d tampoco ayuda.

Todos 3 comentarios

```[[fuente]]
url = " https://pypi.org/simple "
verificar_ssl = verdadero
nombre = "pypi"

[paquetes]
flor = "*"

[paquetes de desarrollo]
tornado = "<5"

[requiere]
versión_python = "3.7"
```

Este archivo reproduce el problema. pipenv lock parece bloquear packages y dev-packages en diferentes etapas. Cuando descubre que flower depende de tornado>=4.2.0 ignora la restricción definida en dev-packages e instala tornado 5. Ejecutar pipenv lock -d tampoco ayuda.

Como solución alternativa, tuve que mover todos los requisitos de [paquetes de desarrollo] a [paquetes]. O supongo que podría haber duplicado todas las entradas de [paquetes] en [paquetes de desarrollo].

Perdón por la demora en responderles a todos, para responder al menos una parte de la consulta, dev-packages pase a segundo plano a packages para evitar que se desarrolle accidentalmente en un entorno que no reflejará lo que sea. despliegas.

Dado que aquí tiene un paquete de nivel superior que depende de tornado ( flower ), y una restricción estricta sobre qué versión de tornado se puede instalar, es muy probable que desee anclar el entrada de tornado en packages ya que se está instalando de cualquier manera. Si el pin de la versión es condicional, debería considerar agregar un marcador de entorno .

En términos generales, este Pipfile dice que usará tornado 5.x en producción, pero <5 en desarrollo, que es algo en lo que diseñamos (es decir, esta fue una decisión de diseño, a menos que use marcadores de entorno, sus dependencias locales coincidirán con las de producción sin importar qué).

Cerrando por ahora, ya que este problema particular de resolución de dependencia es una decisión de diseño, deberá mover su requisito a la sección packages y usar marcadores de entorno

¿Fue útil esta página
0 / 5 - 0 calificaciones