<p>pipenv не соблюдает текущий активированный virtualenv и создает новый env</p>

Созданный на 2 нояб. 2017  ·  3Комментарии  ·  Источник: pypa/pipenv

Не очень уверен, что это ожидаемое поведение, но с точки зрения использования это кажется ошибкой:

Проблема:

pipenv install <package_name> создает новый virtualenv, даже если virtualenv активирован с помощью pipenv shell .

Когда это происходит:

если мы не находимся в том же каталоге, где находится Pipfile .

Опишите свое окружение

  1. Тип ОС: Linux (Ubuntu 16.04)
  2. Версия Python: $ python -V == 3.6.3
  3. Версия Pipenv: $ pipenv --version == версия 8.3.1

Ожидаемый результат

Если мы находимся в активированной оболочке virtualenv, (независимо от pwd ) pipenv install должен уважать его и правильно обновлять Pipfile и не должен создавать новый Pipfile .

Фактический результат

Создается новый Pipfile, даже если он находится в том же активированном virtualenv, но в другом каталоге.

Шаги по воспроизведению

$ 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

Самый полезный комментарий

@erinxocon В этом и заключается проблема: пользователи ожидают, что pipenv заменит pip.

@kennethreitz сам сказал это на домашней странице pipenv:

Вам больше не нужно использовать pip и virtualenv отдельно. Они работают вместе.

Предполагается, что pipenv не только создает virtualenv, как вы сказали, но и управляет им. Опять же, это прямо упоминается на домашней странице (выделено мной):

Он автоматически создает и управляет virtualenv для ваших проектов, а также добавляет / удаляет пакеты из вашего Pipfile при установке / удалении пакетов.

Раньше, когда мы использовали virtualenv и pip по отдельности, мы могли перейти в любой каталог и pip install , и пакет был бы правильно установлен в virtualenv, тот факт, что pipenv этого не делает _ в то время как pipenv -managed virtualenv активирован_ разрушает ожидания пользователей.

Все 3 Комментарий

Привет, @ansrivas! Это не предполагаемый поток pipenv. Pipenv будет использовать виртуальную среду, если она изначально находится в одной, но не во всех последующих вызовах. У вас получится довольно волосатое гнездо виртуальных мастеров! Если вы перейдете к папке за пределами проекта, pipenv создаст новый pipfile. Если вы просто хотите установить некоторые пакеты вне папки, но внутри виртуального окружения, которое вы активировали в подоболочке, вы можете сделать pipenv shell а затем pip install requests . Pipenv можно использовать для создания virtualenv для вашего проекта, но он сам по себе не является менеджером virtualenv, это менеджер проекта.

@erinxocon В этом и заключается проблема: пользователи ожидают, что pipenv заменит pip.

@kennethreitz сам сказал это на домашней странице pipenv:

Вам больше не нужно использовать pip и virtualenv отдельно. Они работают вместе.

Предполагается, что pipenv не только создает virtualenv, как вы сказали, но и управляет им. Опять же, это прямо упоминается на домашней странице (выделено мной):

Он автоматически создает и управляет virtualenv для ваших проектов, а также добавляет / удаляет пакеты из вашего Pipfile при установке / удалении пакетов.

Раньше, когда мы использовали virtualenv и pip по отдельности, мы могли перейти в любой каталог и pip install , и пакет был бы правильно установлен в virtualenv, тот факт, что pipenv этого не делает _ в то время как pipenv -managed virtualenv активирован_ разрушает ожидания пользователей.

Я согласен с @ksze в этом.

Ожидается, что pipenv должен управлять активным virtualenv.

Аналогичным образом ... Я должен иметь возможность использовать -r для установки внешнего файла Pipfile или Pipenv.lock в текущий virtualenv, а не создавать другой.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги