Проблема с подключением VirtualEnv

linux_mint/python3.9

Такая проблема. Создаю virtualenv

python -m virtualenv env

Создалось. Запускаем, активируем, получается. Даже если теперь запустить

os.environ['VIRTUAL_ENV']

То окажется, что переменная виртуального окружения создана, но если вывести

sys.executable

То окажется, что виртуальное окружение не активировано, а все библиотеки устанавливаются прямо на комп.

Как быть?

UPD1: При использовании pipenv ошибка та же, но результат отличается в зависимости от использования. Например, script.py

import sys
print(sys.prefix)

Получаем вот так

(env2)$ pipenv run python script.py 
Courtesy Notice: Pipenv found itself running within a virtual environment,
so it will automatically use that environment, instead of creating its own
for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to
ignore that environment and create its own instead. You can set IPENV_VERBOSITY=-1 
to suppress this warning.
/path/to/env2
(env2)$ python script.py
/usr

Даже сам pipenv говорит, что нет смысла запускать pipenv run, когда pipenv активирован, ведь, получается, что смысл есть...

UPD2: Понял, что venv не то же, что virtualenv. При использовании venv возникла ошибка вроде env/bin/python3.9', '-Im', 'ensurepip', '--upgrade', '--default-pip'.


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

Автор решения: handowl
  1. При использовании virtualenv желательно использовать флаг --no-site-packages, однако, у меня python говорит, что его нет. Говорят, что это дефолт и уже прописано в .bashrc. Проверять не стал, но virtualenv все равно подтягивает зависимости.
  2. По работе получается

venv != virtualenv

я для себя сделал вывод, что лучше использовать первый. Но с ним могут быть проблемы. Например, та, что в вопросе. Решается простой установкой библиотек apt install python3.x-dev python3.x-venv

где вместо x, очевидно, своя версия.

Всем спасибо за помощь. Особенно @insolor

→ Ссылка