python – Unresolved reference issue in PyCharm

The Question :

412 people think this question is useful

I have a directory structure

├── simulate.py
├── src
│   ├── networkAlgorithm.py
│   ├── ...

And I can access the network module with sys.path.insert().

import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *

However, pycharm complains that it cannot access the module. How can I teach pycham to resolve the reference?

enter image description here

The Question Comments :
  • Do src folder has __init__.py file?
  • @Puffin GDI: No, it does not.
  • @PuffinGDI Do src folders need this init.py file?
  • Yes in order for python to identify packages: stackoverflow.com/questions/42094723/…
  • I renamed the class name and continue working on it. When i hit run, there was this error, totally forgot renaming and tried looking for pycharm suggestions during import. Damn, suggestions are case sensitive! – New to python!!

The Answer 1

886 people think this answer is useful

Manually adding it as you have done is indeed one way of doing this, but there is a simpler method, and that is by simply telling pycharm that you want to add the src folder as a source root, and then adding the sources root to your python path.

This way, you don’t have to hard code things into your interpreter’s settings:

  • Add src as a source content root:

                            enter image description here

  • Then make sure to add add sources to your PYTHONPATH under:

    Preferences ~ Build, Execution, Deployment ~ Console ~ Python Console
    
    

enter image description here

  • Now imports will be resolved:

                      enter image description here

This way, you can add whatever you want as a source root, and things will simply work. If you unmarked it as a source root however, you will get an error:

                                  enter image description here

After all this don’t forget to restart. In PyCharm menu select: File –> Invalidate Caches / Restart

The Answer 2

54 people think this answer is useful
  1. check for __init__.py file in src folder
  2. add the src folder as a source root
  3. Then make sure to add add sources to your PYTHONPATH (see above)
  4. in PyCharm menu select: File –> Invalidate Caches / Restart

The Answer 3

25 people think this answer is useful

If anyone is still looking at this, the accepted answer still works for PyCharm 2016.3 when I tried it. The UI might have changed, but the options are still the same.

ie. Right click on your root folder –> ‘Mark Directory As’ –> Source Root

The Answer 4

16 people think this answer is useful

After testing all workarounds, i suggest you to take a look at Settings -> Project -> project dependencies and re-arrange them.

pycharm prefrence

The Answer 5

15 people think this answer is useful

Normally, $PYTHONPATH is used to teach python interpreter to find necessary modules. PyCharm needs to add the path in Preference.

enter image description here

The Answer 6

5 people think this answer is useful

Generally, this is a missing package problem, just place the caret at the unresolved reference and press Alt+Enter to reveal the options, then you should know how to solve it.

The Answer 7

4 people think this answer is useful

Install via PyCharm (works with Community Edition). Open up Settings > Project > Project Interpreter then click the green + icon in the screenshot below. In the 2nd dialogue that opens, enter the package name and click the ‘Install Package’ button.

enter image description here

The Answer 8

4 people think this answer is useful

After following the accepted answer, doing the following solved it for me:

FileSettingsProject <your directory/project>Project Dependencies

Chose the directory/project where your file that has unresolved imports resides and check the box to tell Pycharm that that project depends on your other project.

My folder hierarcy is slightly different from the one in the question. Mine is like this

├── MyDirectory  
│     └── simulate.py  
├── src  
│     ├── networkAlgorithm.py  
│     ├── ...

Telling Pycharm that src depends on MyDirectory solved the issue for me!

The Answer 9

4 people think this answer is useful

Although all the answers are really helpful, there’s one tiny piece of information that should be explained explicitly:

  • Essentially, a project with multiple hierarchical directories work as a package with some attributes.
  • To import custom local created Classes, we need to navigate to the directory containing .py file and create an __init__.py (empty) file there.

Why this helps is because this file is required to make Python treat the directory as containing packages. Cheers!

The Answer 10

2 people think this answer is useful

Many a times what happens is that the plugin is not installed. e.g.

If you are developing a django project and you do not have django plugin installed in pyCharm, it says error ‘unresolved reference’. Refer: https://www.jetbrains.com/pycharm/help/resolving-references.html

The Answer 11

2 people think this answer is useful

This worked for me: Top Menu -> File -> Invalidate Caches/Restart

The Answer 12

1 people think this answer is useful

Please check if you are using the right interpreter that you are supposed to. I was getting error “unresolved reference ‘django’ ” to solve this I changed Project Interpreter (Changed Python 3 to Python 2.7) from project settings: Select Project, go to File -> Settings -> Project: -> Project Interpreter -> Brows and Select correct version or Interpreter (e.g /usr/bin/python2.7).

The Answer 13

1 people think this answer is useful

In my case the problem was I was using Virtual environment which didn’t have access to global site-packages. Thus, the interpreter was not aware of the newly installed packages.

To resolve the issue, just edit or recreate your virtual interpreter and tick the Inherit global site-packages option.

enter image description here

The Answer 14

1 people think this answer is useful

Done in PyCharm 2019.3.1 Right-click on your src folder -> “Mark Directory as” -> Click-on “Excluded” and your src folder should be blue.

The Answer 15

1 people think this answer is useful
  1. –> Right-click on the directory where your files are located in PyCharm
  2. Go to the –> Mark Directory as
  3. Select the –> Source Root

your problem will be solved

The Answer 16

1 people think this answer is useful

I was also using a virtual environment like Dan above, however I was able to add an interpreter in the existing environment, therefore not needing to inherit global site packages and therefore undo what a virtual environment is trying to achieve.

The Answer 17

0 people think this answer is useful

For me, adding virtualenv (venv)’s site-packages path to the paths of the interpreter works. Finally!

enter image description here

The Answer 18

0 people think this answer is useful

I tried everything here twice and even more. I finally solved it doing something I hadn’t seen anywhere online. If you go to Settings>Editor>File Types there is an 'Ignore Files and folders‘ line at the bottom. In my case, I was ignoring 'venv', which is what I always name my virtual environments. So I removed venv; from the list of directories to ignore and VOILA!! I was FINALLY able to fix this problem. Literally all of my import problems were fixed for the project.

BTW, I had installed each and every package using PyCharm, and not through a terminal. (Meaning, by going to Settings>Interpreter...). I had invalidated cache, changed ‘Source Root’, restarted PyCharm, refreshed my interpreters paths, changed interpreters, deleted my venv… I tried everything. This finally worked. Obviously there are multiple problems going on here with different people, so this may not work for you, but it’s definitely worth a shot if nothing else has worked, and easy to reverse if it doesn’t.

The Answer 19

-1 people think this answer is useful

Pycharm uses venv. In the venv’s console you should install the packages explicitly or go in settings -> project interpreter -> add interpreter -> inherit global site-packages.

The Answer 20

-1 people think this answer is useful

The easiest way to fix it is by doing the following in your pyCharm software:

Click on: File > Settings > (Project: your project name) > Project Interpreter >

then click on the “+” icon on the right side to search for the package you want and install it.

Enjoy coding !!!

The Answer 21

-2 people think this answer is useful

In newer versions of pycharm u can do simply by right clicking on the directory or python package from which you want to import a file, then click on ‘Mark Directory As’ -> ‘Sources Root’

Add a Comment