Pipenv: Última dependencia predeterminada marcada como local y editable

Creado en 1 oct. 2020  ·  9Comentarios  ·  Fuente: pypa/pipenv

Revisó la documentación de diagnóstico para problemas comunes. Describí mi flujo de trabajo (posiblemente defectuoso) en los pasos para reproducir a continuación. He estado preocupado por esto durante un par de semanas culpándome a mí mismo, y me encantaría que esto fuera un error.

Descripcion del problema

El último paquete externo que aparece en la sección predeterminada de Pipfile.lock se marca incorrectamente como local y editable

Resultado Esperado

El último paquete externo enumerado todavía se proporciona desde pypi

Resultado actual

Mi Pipfile.lock incluye esta diferencia, que rompe a CI y a otros usuarios por razones obvias:

             "version": "==1.25.10"
         },
         "wrapt": {
-            "hashes": [
-                "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
-            ],
-            "version": "==1.12.1"
+            "editable": true,
+            "path": "."
         }
     },
     "develop": {

Pasos para replicar

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
flake8 = "3.8.3"
pytest = "5.4.3"
pytest-cov = "2.10.0"
termcolor = "1.1.0"

[packages]
mycli = {editable = true, path = "."}

[requires]
python_version = "3.7"

(mycli tiene un setup.py para facilitar la creación de un punto de entrada para el clic de Python y define las dependencias que no son de desarrollo)

El proyecto es una utilidad CLI y clonamos el repositorio e instalamos a través de:
PIPENV_IGNORE_VIRTUALENVS=1 PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy

Como desarrollador que agrega una nueva dependencia, edito setup.py y ejecuto:
pipenv lock

Esto genera un archivo Pipfile.lock que incluye mi nueva dependencia, pero también una última dependencia predeterminada mal formada (he tenido el problema con varios paquetes que están cerca del final del alfabeto en esa posición, específicamente wrapt y zipp )

Puedo solucionar el problema y generar un Pipfile.lock correcto mediante:
rm -rf Pipfile.lock .venv
y
pipenv lock


Estoy omitiendo a propósito la salida pipenv --support porque la aplicación en la que estoy trabajando es propietaria y me preocupa que se filtren detalles de nuestro entorno (o que nuestro equipo de seguridad me grite: riendo :). Si hay fragmentos específicos que pueda eliminar y proporcionar, me complacería hacerlo, pero no quería eliminar todo desde el principio.

Gracias por leer y nuevamente, espero ser tonto.
¡Gracias!

Type Vendored Dependencies

Comentario más útil

Como comentaron @jmehnle y @patelamol , he estado experimentando un problema similar con algunos de mis paquetes en este caso

       "zipp": {
            "editable": true,
            "path": "."
        },

Mi solución fue editar manualmente el bloqueo del archivo pip, que es inseguro / insalubre a la última versión

"zipp": {
            "hashes": [
                "sha256:43f4fa8d8bb313e65d8323a3952ef8756bf40f9a5c3ea7334be23ee4ec8278b6",
                "sha256:b52f22895f4cfce194bc8172f3819ee8de7540aa6d873535a8668b730b8b411f"
            ],
            "version": "==3.2.0"
        }

Me pregunto si habrá una actualización de pipenv próximamente con esta corrección de errores.

Todos 9 comentarios

@patelamol y puedo reproducir esto con pipenv 2020.08.13.

Experimenté este error en la última versión hasta 2018.11.26 . Entonces 2018.11.26 no tiene este problema.

Como comentaron @jmehnle y @patelamol , he estado experimentando un problema similar con algunos de mis paquetes en este caso

       "zipp": {
            "editable": true,
            "path": "."
        },

Mi solución fue editar manualmente el bloqueo del archivo pip, que es inseguro / insalubre a la última versión

"zipp": {
            "hashes": [
                "sha256:43f4fa8d8bb313e65d8323a3952ef8756bf40f9a5c3ea7334be23ee4ec8278b6",
                "sha256:b52f22895f4cfce194bc8172f3819ee8de7540aa6d873535a8668b730b8b411f"
            ],
            "version": "==3.2.0"
        }

Me pregunto si habrá una actualización de pipenv próximamente con esta corrección de errores.

@gregflynn @patelamol Entonces, ¿existe este problema en la rama maestra? No puedo reproducir con los pasos dados

@gregflynn @patelamol Entonces, ¿existe este problema en la rama maestra? No puedo reproducir con los pasos dados

¡Seguramente! No he ejecutado pipenv desde github antes y no vi instrucciones en el archivo README, así que seré detallado sobre los pasos:

  1. git clonado
  2. pyenv virtualenv 3.7.9 pipenv && pyenv local pipenv && pip install -e .
  3. verificación:
    ''
    $ pipenv --versión
    pipenv, versión 2020.8.13
$ ~/.pyenv/versions/pipenv/bin/pipenv --version 
pipenv, version 2020.8.13.dev0
```

  1. hizo un nuevo venv con 2020.8.13
  2. agregó stockquotes == 2.0.0 a mi setup.py
  3. corrió ~/.pyenv/versions/pipenv/bin/pipenv lock
  4. Sin dados, viendo el error con
         "wrapt": {
-            "hashes": [
-                "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
-            ],
-            "version": "==1.12.1"
+            "editable": true,
+            "path": "."
         }
     },

@frostming gracias por la sugerencia y echar un vistazo, feliz de hacer más pruebas o corregir esta prueba si me he descarriado.

@gregflynn

  1. hizo un nuevo venv con 2020.8.13

¿Es este paso fundamental para reproducir el error? Creo con el maestro Pipenv y no puedo reproducir. Una imagen de Docker sería de gran ayuda si es posible

@gregflynn

  1. hizo un nuevo venv con 2020.8.13

¿Es este paso fundamental para reproducir el error? Creo con el maestro Pipenv y no puedo reproducir. Una imagen de Docker sería de gran ayuda si es posible

Buen ojo, pero hice los siguientes cambios y aún pude reproducir con la última versión maestra. Para el paso 4, actualicé mi script de instalación:

-PIPENV_IGNORE_VIRTUALENVS=1 PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy
+PIPENV_IGNORE_VIRTUALENVS=1 PIPENV_VENV_IN_PROJECT=1 $HOME/.pyenv/versions/pipenv/bin/pipenv install --deploy

y todavía tengo:

         "wrapt": {
-            "hashes": [
-                "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
-            ],
-            "version": "==1.12.1"
+            "editable": true,
+            "path": "."
         }
     },

¡Feliz de probar más cosas! Gracias

¡Oh, logré reproducirlo! No noté que el factor crítico es VENV_IN_PROJECT.

¡Oh, logré reproducirlo! No noté que el factor crítico es VENV_IN_PROJECT.

: raise_hands: ¡buenas noticias! lo siento, me olvidé de darte un Dockerfile, me perdí esa nota en mi primera lectura

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