Unresolved reference issue in PyCharm
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?
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:
-
Then make sure to add add sources to your
PYTHONPATH
under:Preferences ~ Build, Execution, Deployment ~ Console ~ Python Console
- Now imports will be resolved:
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:
After all this don't forget to restart. In PyCharm menu select: File --> Invalidate Caches / Restart
- check for
__init__.py
file insrc
folder - add the
src
folder as a source root - Then make sure to add add sources to your
PYTHONPATH
(see above) - in PyCharm menu select: File --> Invalidate Caches / Restart
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
After testing all workarounds, i suggest you to take a look at Settings -> Project -> project dependencies
and re-arrange them.
Normally, $PYTHONPATH is used to teach python interpreter to find necessary modules. PyCharm needs to add the path in Preference.