"Невозможно настроить SDK Python" в проекте PyCharm, используя virtualenv после переустановки ОС

Я снова установил окна и открыл существующий проект Pycharm и получил сообщение об ошибке "SDK кажется недействительным" в "Настройки"> "Переводчик проекта".

Путь интерпретатора проекта указывает на python в venv:

MyProject\venv\Scripts\python.exe

enter image description here

Я попробовал повторно добавить python.exe:

enter image description here

То когда я получаю ошибку:

enter image description here

Обновление: вот ошибка от идеи.log, многие другие проблемы для виртуальных сред, похоже, связаны с переменными среды Windows и системными путями:

2018-09-28 19:50:40,275 [  17601]   INFO - hon.packaging.PyPIPackageCache - Loaded 153296 packages from C:\Users\Matt\.PyCharm2018.2\system\python_packages\pypi-cache.json 
2018-09-28 19:50:40,816 [  18142]   INFO - rains.python.sdk.PythonSdkType - Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00000fa8 (most recent call first):

Exit code -1073740791 
2018-09-28 19:50:40,816 [  18142]  ERROR - ns.python.sdk.PythonSdkUpdater - Failed to determine Python sys.path value:
STDOUT: 
STDERR: Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00000fa8 (most recent call first):

com.jetbrains.python.sdk.InvalidSdkException: Failed to determine Python sys.path value:
STDOUT: 
STDERR: Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Ответ 1

Вот что решило мою проблему, когда я столкнулся с точно такой же проблемой

Перейдите к Project Interpreter, справа от поля выбора, щелкните значок шестеренки, он покажет две опции: добавить & показать все.

Нажмите Показать все, если вы видите предыдущее существование из того же каталога, удалите его. Нажмите на кнопку добавления или знак +, чтобы добавить нового интерпретатора и перейдите к project path, перейдите вниз к каталогу виртуальной среды.

venv/bin/{выберите исполняемый файл python с кодом версии, т.е. если вы используете python3.6, выберите python3.6}

После выбора вы можете нажать на уведомление с надписью install packaging tools, нажать "Применить" и все готово.

enter image description here

Ответ 2

Скорее всего, какой-то путь к среде Python, который пытается использовать PyCharm, где-то стал недействительным. Есть (по крайней мере) два основных подозреваемых:

Путь к вашему virtualenv в настройках PyCharm

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

Перейдите к настройкам интерпретатора для вашего проекта в File->Settings...->Project interpreter->(Gear icon)->Show all...:

settings

Затем удалите и заново создайте необходимые записи. Или отредактируйте их и укажите правильные пути. Например, это мой список выглядит после того, как я удалил установку Anaconda:

interpreter settings

Путь в virtualenv к базовой установке

Поскольку virtualenv не является полной установкой, он должен иметь путь к своей базовой установке, хранящейся где-нибудь, чтобы иметь возможность использовать файлы оттуда.

Начиная с этой записи, virtualenv (v16.0.0) в Windows реализуется следующим образом:

  • Реальный файл python.exe и несколько других файлов копируются в подэлемент virtualenv
  • В Lib\orig-prefix.txt путь к базовой установке. Он используется для добавления базовой версии Lib в sys.path помощью пользовательского site.py

Таким образом, если путь в этом файле становится недействительным, интерпретатор virtualenv Python не сможет найти никаких стандартных модулей, кроме тех, которые были скопированы. Что отлично подходит для ваших симптомов.

Ответ 3

Какое решение: Проверьте venv\pyvenv.cfg и укажите правильный путь к базовой установке Python.

Что наиболее вероятно произошло: После переустановки ОС у вас не будет переустановлен базовый интерпретатор Python, или вы установили его в другом месте, чем раньше. Таким образом, ваша виртуальная среда не может найти установку Python. Виртуальная среда подразумевает, что все библиотеки и настройки изолированы от других проектов. Он не обеспечивает изолированную установку Python. Вам все еще нужен ваш базовый питон, который использовался для создания venv.

Мой случай: У меня есть проект в сетевой папке, и я пытаюсь получить к нему доступ с разных компьютеров. Базовые пути Python зависят от самого ПК. Решение выше работает хорошо для меня. К сожалению, мне нужно обновить pyvenv.cfg в зависимости от используемого ПК.

P.S. Я полагаю, что существует переменная окружения для переопределения значения конфигурации venv. Я только попытался set PYTHONPATH=C:\Anaconda3\envs\python37 на Windows, а затем активировать venv. Это не произвело никакого эффекта, и я бросил это.