68

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'
ivan_pozdeev
  • 33,874
  • 19
  • 107
  • 152
el_pup_le
  • 11,711
  • 26
  • 85
  • 142
  • 1
    Are you sure this is not a duplicate of https://stackoverflow.com/questions/31840195/invalid-python-sdk-error-while-using-python-3-4-on-pycharm or https://stackoverflow.com/questions/34618858/why-do-i-get-an-sdk-seems-invalid-error-when-setting-up-my-project-interpreter? – kabanus Sep 28 '18 at 08:27
  • I think it is though I'm using a virtual environment version of Python not sure if I have to set windows paths for that. – el_pup_le Sep 28 '18 at 10:04
  • Okay, I found another possible cause that fits your symptoms. – ivan_pozdeev Oct 04 '18 at 13:34
  • Could you create a new project with a new venv and then copy the files from the old project into the new project? – mistakeNot Oct 04 '18 at 13:54

14 Answers14

28

The solution is to check out venv\pyvenv.cfg and provide a valid path to the basic python installation.

What has most probably happened: After reinstalling your OS, you have no base python interpreter reinstalled or you have installed it at a 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 tried accessing it from different computers. The base python paths depend on the very PC. The solution above works fine for me. Unfortunately, I need to update pyvenv.cfg depending on the PC in use.

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

pch
  • 533
  • 6
  • 11
18

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

silverFoxA
  • 4,549
  • 7
  • 33
  • 73
10

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.

ivan_pozdeev
  • 33,874
  • 19
  • 107
  • 152
  • I re-installed windows though so all the settings would of been deleted, or are they in the project's directory? I just copied and pasted the project folder onto disk then opened the project in PyCharm. – el_pup_le Sep 28 '18 at 10:14
  • @el_pup_le AFAICS interpreter environment settings are global, so they must be in `%USERPROFILE%\.PyCharm`. If you didn't wipe your user profile during reinstallation, they survived. – ivan_pozdeev Sep 28 '18 at 10:16
  • I re-installed windows so that must not be the solution – el_pup_le Sep 28 '18 at 10:17
  • 1
    what about the __pycache__ or .idea folders in the project folder? – el_pup_le Sep 28 '18 at 10:18
  • @el_pup_le I've nothing else to add to my previous message. It doesn't really matter where the settings are, it only matters if they are correct -- and your error suggests they aren't. – ivan_pozdeev Sep 28 '18 at 10:53
  • there is a pyvenv.cfg file in the venv directory, with home = ...\AppData\...\Python36-32, is that created by PyCharm? – el_pup_le Sep 29 '18 at 03:23
  • And I don't understand why its pointing to a global installation shouldn't it be the venv installation of Python? – el_pup_le Sep 29 '18 at 03:24
  • @el_pup_le what exactly is unclear in my post? I suggest to check and fix the settings in PyCharm itself, not hunt files around the disk. – ivan_pozdeev Sep 29 '18 at 04:15
  • @el_pup_le If you're interested where PyCharm keeps its settings or what those files are, that's completly unrelated to the current question. (FWIW see https://www.jetbrains.com/help/pycharm/project-and-ide-settings.html on the former, the 1st in google on "where pycharm keeps global and project-specific settings"). – ivan_pozdeev Sep 29 '18 at 04:17
  • well i deleted the .idea folder and it didn't work, i just deleted the venv and created a new one now I'll have to install all the packages again – el_pup_le Sep 29 '18 at 04:55
  • I'd still like to know how to fix that problem though – el_pup_le Sep 29 '18 at 04:55
  • 1
    Additionally, this also could happen when you move your Virtual Environment around. Yes, it does not designed to be moved at all and you have to recreate a virtual environment which usually is not a big of a hassle. – Eir Nym Oct 03 '18 at 10:30
  • @EirNym that's reasonable 'cuz PyCharm needs to know path to the environment to run things in it, and if you move it, the path becomes invalid. – ivan_pozdeev Oct 03 '18 at 13:36
  • First make sure your python path is set. Try executing python from terminal. If that works, then create new virtual environment and that should work. – My3 Oct 04 '18 at 06:29
  • None of the other methods worked for me. deleted *.idea* and it worked! – borgr Jun 11 '20 at 14:36
4

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.

zmag
  • 7,825
  • 12
  • 32
  • 42
bbqckwin
  • 41
  • 1
2

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

KarlsMaranjs
  • 311
  • 1
  • 9
1

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

0

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....

Koen
  • 1
0

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.

Pratik Mhatre
  • 779
  • 7
  • 12
0

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.

0

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.

GMSL
  • 355
  • 2
  • 11
0

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.

nazi
  • 1
  • 2
0

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.

K V
  • 1
0

This problem is because the interpreter path points to the virtual-env, instantiated to the particular project. But we don't have any python installed there.

Therefore we have to set the interpreter path to the "python.exe" file inside the python folder which we have installed on our PC.

enter image description here

This can solve this problem very easily.

If you haven't installed python on your machine please install it and set the path accordingly.

Thank you.

0

I also had this issue and it's 2023! All I can tell you is what I did to fix it. I tried the other solutions listed in this post (at least the ones I looked at) and they didn't work.

What I did was I copied the venv file in my project (for safekeeping) and then moved it elsewhere.

I deleted the venv file in my project after making my backup and I deleted the interpreter that I had been trying to use.

From there I opened up File -> Settings -> Python Interpreter -> and since there was now no interpreter and no venv folder

I created the interpreter again. Make sure to list the proper path to the version of the python exe you want to use!

From there you pretty much just apply your changes and you will see it pop up with some prompts. It will create a new venv folder for you, just accept the prompts and it worked for me.

halfer
  • 19,824
  • 17
  • 99
  • 186
dbel
  • 33
  • 6