Почему пакеты часто ставятся в основной Python, а не в виртуальное окружение?

Делаю под каждый проект, где собираюсь использовать стороннюю библиотеку, отдельное виртуальное окружение.

Потом ставлю туда нужные пакеты, через pip install

Два пакета встало, я начал писать код, через некоторое время мне понадобился еще один, пытаюсь установить - а оно ставится в основной питон. И это уже не в первый раз... В командной строке конечно та папка, которая мне и нужна. введите сюда описание изображения


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

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

Как определить в каком окружении вы находитесь.

  1. В cmd должна быть указана папка в скобках для виртуального пространства. Она появляется после активации.

Изначально

C:\Users\Dmitry\proj>

В данной папке у меня лежит venv-папка с виртуальным пространством, т.е. если я вызову dir, то увижу следующее

C:\Users\Dmitry\proj>dir
 Directory of C:\Users\Dmitry\proj

17.02.2022  18:22    <DIR>          .
17.02.2022  18:22    <DIR>          ..
06.12.2021  08:33    <DIR>          venv
  1. Теперь активирую виртуальное пространство и сразу в cmd можно увидеть, что я его использую (на вашем скрине, понятно, что вы не находитесь в виртуальном пространстве)
C:\Users\Dmitry\proj>venv\Scripts\activate
(venv) C:\Users\Dmitry\proj>
  1. Из интерпретатора python можно спросить: какой python вы сейчас используете
(venv) C:\Users\Dmitry\proj>py
Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\Python39\\python39.zip', 'C:\\Python39\\DLLs', 'C:\\Python39\\lib', 
'C:\\Python39', 'C:\\Users\\Dmitry\\proj\\venv', 
'C:\\Users\\Dmitry\\\proj\\venv\\lib\\site-packages']

Два послдених члена указывают на мою папку с виртуальным окружением

  1. Если деактивировать пространство, то тогда вывод будет таким
C:\Users\Dmitry\proj>py
Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\Python39\\python39.zip', 'C:\\Python39\\DLLs', 'C:\\Python39\\lib', 
'C:\\Python39', 'C:\\Python39\\lib\\site-packages']

В этом случае, у меня глобальное окружение

→ Ссылка