Установка Pip requirements.txt в venv: как игнорировать системные пакеты сайта другой версии?

#python-3.x #pip #python-venv #requirements.txt

#python-3.x #pip #python-venv #requirements.txt

Вопрос:

Я нахожусь в виртуальной среде, которая совместно использует пакеты системного сайта (созданные с venv помощью Python 3.5), и я хотел бы установить все пакеты в данном requirements.txt в этот venv. Общесистемная установка python доступна только для чтения, поэтому я не могу ее изменить.

Теперь, например, мой requirements.txt списки, среди многих других,

 SomePackage==2.0
  

как требование, в то время как установка системы уже содержит SomePackage-1.0 . Таким образом, Pip пытается удалить SomePackage-1.0 для обновления до версии 2.0. Однако это не удается, поскольку общесистемная установка python доступна только для чтения.

Есть ли способ запустить pip install -r requirements.txt таким образом, чтобы игнорировались установленные пакеты, если они имеют версию, отличную от требуемой, и просто устанавливалась требуемая версия в venv?

Я думаю, это было бы похоже на установку каждого пакета по одному и использование --ignore-installed всякий раз, когда пакет уже присутствует в версии, отличной от требуемой. Это, однако, кажется довольно громоздким. Есть ли лучший способ?

Обратите внимание, что я использую venv с общими пакетами системного сайта, потому что я хочу избежать установки нескольких огромных пакетов каждый раз, когда я создаю новый venv. Таким образом, я не хочу переключаться на полностью изолированный venv, у которого, конечно, не было бы вышеупомянутой проблемы.

Любой намек был бы очень признателен! Большое спасибо!

Комментарии:

1. У вас есть какие-либо идеи, почему использование pip install -r requirements.txt --ignore-installed не работает?

Ответ №1:

Чтобы перечислить только пакеты, необходимые для вашего проекта внутри venv, а не все глобальные пакеты с вашего компьютера, сначала вам нужно активировать virtualenv и из (env) выполнить pip freeze > requirements.txt команду.

Таким образом, у вас будет строгий список пакетов, необходимых для указанного проекта.