'Cannot setup a Python SDK' in PyCharm project using virtualenv after OS reinstallation

PythonPycharmVirtualenv

Python Problem Overview


I re-installed windows and opened an existing Pycharm project and get the error 'SDK seems invalid' in Settings > Project Interpreter.

The project interpreter path is pointing to python in the venv:

MyProject\venv\Scripts\python.exe

enter image description here

I tried re-adding python.exe:

enter image description here

Thats when I get the error:

enter image description here

Update: here is an error from idea.log, a lot of other issues for virtual environments seem to be with windows environment variables and system paths:

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's 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's sys.path value:
STDOUT: 
STDERR: Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Python Solutions


Solution 1 - Python

What solution is: Check out venv\pyvenv.cfg and provide a valid path to the basic python installation.

What has most probably happend: After reinstalling your OS, you have no base python interpreter reinstalled or you have installed it at different location than before. Thus your virtual environment fails to locate the python installation. Virtual environment implies that all libraries and settings are isolated from other projects. It does not provide an isolated python installation. You still need your base python that had been used for venv creation.

My case: I have a project in a network share and try accessing it from different computers. The base python paths depend on the very PC. The solution above works fine for me. Unfortunatelly, I need to update pyvenv.cfg depending on the PC in use.

P.S. I believe that there is an environment variable to overide the venv config value. I only tried to set PYTHONPATH=C:\Anaconda3\envs\python37 on Windows and then to activate venv. It did no effect and I gave it up.

Solution 2 - Python

Here's what solved my problem when I faced the exact same issue

Navigate to Project Interpreter, right side of the selection box, click the gear icon, it will show two options add & show all.

Click show all, if you see the previous existence from the same directory delete that. Click on add or + sign to add a new interpreter and navigate to your project path, navigate down to the virtual environment directory.

>venv/bin/{select the python executable with the version code i.e if you are using python3.6 select python3.6}

Once selected, you can now click the notice that says install packaging tools, hit apply and done.

enter image description here

Solution 3 - Python

Most probably, some path to Python environment that PyCharm tries to use has become invalid somewhere. There are (at least) two primary suspects:

Path to your virtualenv in PyCharm settings

PyCharm needs to know the path to your environment to run things in it. So, if that path changed, PyCharm's saved path has become invalid.

Go to the interpreter settings for your project in File->Settings...->Project interpreter->(Gear icon)->Show all...:

settings

Then delete and recreate the necessary entries. Or edit them and specify correct paths. E.g. this is what my list looks like after I deleted an Anaconda installation:

interpreter settings

Path in the virtualenv to its base installation

Since virtualenv is not a full installation, it must have a path to its base installation stored somewhere to be able to use files from there.

As of this writing, virtualenv (v16.0.0) in Windows is implemented like this:

  • The real python.exe and several other files are copied into the virtualenv's subtree
  • In Lib\orig-prefix.txt, the path to the base installation is stored. It is used to add the base installation's Lib to sys.path via a custom site.py.

So, if the path in that file becomes invalid, the virtualenv's Python interpreter will be unable to find any standard modules except those few that were copied. Which perfectly fits your symptoms.

Solution 4 - Python

I currently have the same issue, that I can't install any package tool in Pycharm and that freak me out. Here is the step I fixed it, just want to share. OuO.

Step 1

Find show all in the right corner of a setting icon  Find show all in the right corner of a setting icon

Step 2

Click the + icon to open Add python Interpreter  Click the + icon to open Add python Interpreter

Step 3

In New environment 's Location Under Virtualenv Environment select file  In New environment 's Location Under Virtualenv Environment select file

Step 4

Find your Pycharm file and make an empty file under it and click OK and keep click OK  Find your Pycharm file and make an empty file under it and click OK and keep click OK

Step 5

Now in Project Interpreter select the empty file you just create and now you should be fine to install Pycharm package.Hope this solve your problem.  Now in Project Interpreter select the empty file you just create and now you should be fine to install Pycharm package.Hope this solve your problem.

Solution 5 - Python

Nothing above worked for me

I made a simple change , Hope it works for you too !!

It happens due to conflict in storing python.exe , In my case it was in F:\ drive

Solution :- Pycharm expects python.exe file to be present in some location , you can check that in project interpreter , it will show some default location where pycharm is searching to execute exe file , but issue is the exe file is not present at that location , so create the folder which pycharm was expecting to execute exe file and paste the downloaded exe file

Hope it Works for you !!

Happy Coding

Solution 6 - Python

Well, i'm pritty new to Python, and I did too had a re-install of my os after a crash

Old setup: In the old system setup I used python 3.7.4. I made al my (practice)projects with that, and each project had a venv/scripts/python3.7.exe in it.... my undertanding is/was that all the files in these virtual environment where 'stand alone', so sufficient to run a python 3.7.4 for that specific projec files, and not depending on files of the home-python-dir. The install-directory of python was c:\Program Files (x86)\python 37-32

Each project had a file [project-path]/venv/pyvenv.cfg, and in this file there was the line home = C:\Program Files (x86)\Python37-32

then - my system crashed - reinstalled windows 10, and downloaded again python, but this time python 3.8, and it installed in C:\Program Files (x86)\Python38-32

New setup: So, after some hairs lost - I also installed the old python version 3.7.4 in the specific path stated in the pyenv.cfg file (C:\Program Files (x86)\Python37-32). So, i had 2 python versions installed on my new system, one in .../python38-32 and one in .../python37-32

And that worked, so when I selected in 'add interpreter/existing interpreter' and pointed to the [project]/venv/python3.7.exe it worked like a charm.

So, apearantly there are files in each version-specific home-directory that pycharm/python needs - i was under the impression that the files in the .venv directory would be all it needed....

Solution 7 - Python

I faced this issue when I switched my system which had different python version installed at different location. The simple short solution is to open 'pyenv' file and point it to the current installation path in your current system and that's it.

Solution 8 - Python

I had the same problem and couldn't really figure it out. As it was a side project the mistake was infuriating and hilarious at the same time.

My folder names had non-english letters. Specifically it had the letter "đ" and the SDK was always invalid because of it.

You might say a stupid mistake, it was, but I wasn't really paying attention. Hope this helps somebody.

Solution 9 - Python

I get the issue in Pycharm 2021.2.3 when I try to make a new environment using an exe that is called anything but python.exe (I was organising my different versions by calling them python39.exe, python38.exe, etc.). I just stopped doing that and renamed all my python exes to python.exe and it started working.

Solution 10 - Python

In my case the problem was because I was using WSL to host my project so the project address used by PyCharm to create and select the venv was wrong. Instead of using the option Virtualenv Environment to create the environment:

enter image description here

You need to select the WSL option from the side bar and then enter the path to your new or existing venv.

enter image description here

Solution 11 - Python

go to the Edit Configuration foe edit interpreter, then remove all interpreter then ok. now, you should add new interpreter and select the path of python.exe in your installation path(for example c:\ ),then ok. for me, i solved this error by this solution.

Solution 12 - Python

The paths specified in pyvenv.cfg need to be corrected after the venv folder is copied from one computer to another. The main place to look at is the user name. For example:

Old computer:C:\Users\OldComputerUserName\AppData\Local\Programs\Python\Python310

New computer:C:\Users\NewComputerUserName\AppData\Local\Programs\Python\Python310

The path is fixed when you add interpreter to the project the 1st time. I learned it the hard way too.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionel_pup_leView Question on Stackoverflow
Solution 1 - PythonpchView Answer on Stackoverflow
Solution 2 - PythonsilverFoxAView Answer on Stackoverflow
Solution 3 - Pythonivan_pozdeevView Answer on Stackoverflow
Solution 4 - PythonbbqckwinView Answer on Stackoverflow
Solution 5 - Pythonbitni shanawazView Answer on Stackoverflow
Solution 6 - PythonKoenView Answer on Stackoverflow
Solution 7 - PythonPratik MhatreView Answer on Stackoverflow
Solution 8 - PythonJumboKremView Answer on Stackoverflow
Solution 9 - PythonGMSLView Answer on Stackoverflow
Solution 10 - PythonKarlsMaranjsView Answer on Stackoverflow
Solution 11 - PythonnaziView Answer on Stackoverflow
Solution 12 - PythonK VView Answer on Stackoverflow