Не устанавливается pip в venv

Я создал виртуальное окружение командами

virtualenv -p python3 venv 
source venv/bin/activate

и пытаюсь установить pip в этом окружении

 pip3 install requests
Collecting requests
  Using cached requests-2.26.0-py2.py3-none-any.whl (62 kB)
Collecting urllib3<1.27,>=1.21.1
  Using cached urllib3-1.26.6-py2.py3-none-any.whl (138 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2021.5.30-py2.py3-none-any.whl (145 kB)
Collecting charset-normalizer~=2.0.0; python_version >= "3"
  Using cached charset_normalizer-2.0.5-py3-none-any.whl (37 kB)
Collecting idna<4,>=2.5; python_version >= "3"
  Using cached idna-3.2-py3-none-any.whl (59 kB)
Installing collected packages: urllib3, certifi, charset-normalizer, idna, requests
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/home/ubuntu/pipeline/venv/lib/python3.8/site-packages/urllib3-1.26.6.dist-info'
Consider using the `--user` option or check the permissions.

Пробовал, используя user:

pip3 install requests --user
ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

Использовал sudo:

sudo pip3 install requests
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.22.0)

В чем проблема? Как установить pip


Ответы (1 шт):

Автор решения: Dmitry

Ответ в комментарии я не получил. Повангуем.

Проблема могла возникнуть по причине установки сразу нескольких пакетов, например так:

pip install -r requirements.txt

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

Получилось так, что пакеты закешировались, но не установились и через pip freeze их не увидеть.

Что можно сделать:

  1. Заглянуть в кэш pip'a
python -m pip cache list
  1. Если мои догадки верны, то лист будет содержать все ваши пакеты. Их можно удалить все из кэша, либо по отдельности
python -m pip cache remove
  1. И повторить установку пакетов по отдельности, либо без того, котоый не хочет устанавливаться

документация по работе с кэшем pip.

И дополнительный вариант. Из requirements.txt удалить конфликтующий пакет, повторить установку без него. А затем уже колдовать с только с ним.

Естественно, что все манипуляции с активным виртуальным окружением

→ Ссылка