#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
команду.
Таким образом, у вас будет строгий список пакетов, необходимых для указанного проекта.