<p>pipenv no está respetando el virtualenv activado actual y está creando un nuevo entorno</p>

Creado en 2 nov. 2017  ·  3Comentarios  ·  Fuente: pypa/pipenv

No estoy muy seguro de si este es un comportamiento esperado, pero desde una perspectiva de uso, parece ser un error:

Asunto:

pipenv install <package_name> está creando un nuevo virtualenv aunque el virtualenv esté activado usando pipenv shell .

¿Cuándo ocurre?

si no estamos en el mismo directorio donde se encuentra Pipfile .

Describe tu entorno

  1. Tipo de sistema operativo: Linux (Ubuntu 16.04)
  2. Versión de Python: $ python -V == 3.6.3
  3. Versión de Pipenv: $ pipenv --version == versión 8.3.1

Resultado Esperado

Si estamos en un shell virtualenv activado, (independientemente del pwd ) pipenv install debería respetarlo y actualizar correctamente el Pipfile y no debería crear un nuevo Pipfile .

Resultado actual

Se crea un nuevo Pipfile, incluso si está en el mismo virtualenv activado pero en un directorio diferente.

Pasos para replicar

$ mkdir -p testproject/app
$ cd  testproject/app
$ pipenv install flask
$ pipenv shell # environment gets activated here
$ <my_new_environment>$  cd ..  # Now we are inside testproject
$ pipenv install requests
$ New Pipfile gets created here

Comentario más útil

@erinxocon Y aquí radica el problema: los usuarios esperan que pipenv sea un reemplazo de pip.

@kennethreitz lo dijo él mismo en la página de inicio de pipenv:

Ya no es necesario utilizar pip y virtualenv por separado. Trabajan juntos.

Se supone que pipenv no solo crea el virtualenv, como dijiste, sino que también lo administra . Nuevamente, se menciona explícitamente en la página de inicio (el énfasis es mío):

Crea y administra automáticamente un virtualenv para sus proyectos, así como también agrega / elimina paquetes de su Pipfile a medida que instala / desinstala paquetes.

En los viejos tiempos, cuando usábamos virtualenv y pip por separado, podíamos navegar a cualquier directorio y pip install , y el paquete se instalaría correctamente en virtualenv, el hecho de que pipenv no hace eso _ mientras que pipenv -el virtualenv administrado está activado_ rompe las expectativas del usuario.

Todos 3 comentarios

Hola @ansrivas! Este no es el flujo previsto de pipenv. Pipenv utilizará un entorno virtual si se encuentra en uno inicialmente, pero no en todas las llamadas posteriores. ¡Tendrías un nido bastante peludo de virtualenvs! Si navega a una carpeta que está fuera del proyecto, pipenv creará un nuevo archivo pip. Si solo desea instalar algunos paquetes fuera de la carpeta, pero dentro del entorno viruta que activó en la subcapa, puede hacer pipenv shell y luego pip install requests . Pipenv se puede usar para crear un virtualenv para su proyecto, pero en sí mismo no es un administrador de virtualenv, es un administrador de proyecto.

@erinxocon Y aquí radica el problema: los usuarios esperan que pipenv sea un reemplazo de pip.

@kennethreitz lo dijo él mismo en la página de inicio de pipenv:

Ya no es necesario utilizar pip y virtualenv por separado. Trabajan juntos.

Se supone que pipenv no solo crea el virtualenv, como dijiste, sino que también lo administra . Nuevamente, se menciona explícitamente en la página de inicio (el énfasis es mío):

Crea y administra automáticamente un virtualenv para sus proyectos, así como también agrega / elimina paquetes de su Pipfile a medida que instala / desinstala paquetes.

En los viejos tiempos, cuando usábamos virtualenv y pip por separado, podíamos navegar a cualquier directorio y pip install , y el paquete se instalaría correctamente en virtualenv, el hecho de que pipenv no hace eso _ mientras que pipenv -el virtualenv administrado está activado_ rompe las expectativas del usuario.

Estoy de acuerdo con @ksze en esto.

Existe la expectativa de que pipenv administre el virtualenv activo.

En líneas similares ... Debería poder usar -r para instalar un Pipfile externo o Pipenv.lock en el virtualenv actual, y no crear otro.

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