активируется venv, но по факту видит только глобальные библиотеки

Рейтинг: 0Ответов: 2Опубликовано: 10.08.2023

Работаю в Windows 11 через обычный cmd.exe. Раньше я работал в обыкновенном venv, все было хорошо. Потом я перешел на poetry все работало до какого то момента. На новом проекте устанавливал много библиотек, начал замечать что при poetry add он пишет что все установлено, в pyproject.toml и poetry.lock все зависимости писались, но по факту не устанавливалось. И я ставил через pip install. Теперь я понял что устанавливал глобально все, в тот момент виртуальное окружение не работало. Теперь когда я запускаю хоть в старых проектах через venv\Scripts\activate хоть poetry shell в новых по факту ничего не активируется. Более того poetry shell как бы активируется только в последнем проекте, а в других проектах выдает ошибку: Invalid value (at line 17, column 17)

Куда копнуть? Какие настройки посмотреть нужно, которые влияют на это? Возможно ли это из-за того что я реорганизовал папки с проектами и теперь они по другим путям лежат?

Ответы

▲ 0

Сложилась такая же ситуация — виртуальная среда активирована, но при этом интерпретатор и менеджер пакетов (в моём случае 'pip') использовались глобальные (случилось только не на Windows, а на Mac). И, в принципе, автор вопроса сам на него ответил, упомянув о "реорганизации" проекта с перемещением рабочих каталогов. У меня некорректная работа была вызвана переименованием проекта (хотя и не исключаю, что тоже перемещал) вне IDE, то есть без рефакторинга проекта.

Собственно, вот она причина, а решение простое (в моём случае): удалил папку с виртуальной средой, и настроил её — среду — заново.

▲ 0

Я использую Windows 10 и pip, и у меня проблема возникла из-за русского языка: как только я создал виртуальную среду в пути, где нет русских букв, всё заработало. !!!Важно не менять названия папок, ведь это рушит путь до вашего интерпретатора, а он создаётся лишь один раз, когда вы создаёте виртуальную среду

Как насчёт других установщиков и ОС - не знаю, но на Windows 10 и pip точно должно сработать.