How to import python file located in same subdirectory in a pycharm project
Solution 1
If you don't have an __init__.py
create one and add this line
from util.util import my_function
then you can easily import the module in your scripts
the __init__.py
tells python that it should treat that folder as a python package, it can also be used to import/load modules too.
in most cases the __init__.py
is empty.
Quoting the docs:
The
__init__.py
files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such asstring
, from unintentionally hiding valid modules that occur later on the module search path. In the simplest case,__init__.py
can just be an empty file, but it can also execute initialization code for the package or set the__all__
variable, described later.
Solution 2
Recommended Way:
Make sure to set the working folder as Sources
.
You can do it in Pycharm
->
Preferences
->
Project: XYZ
->
Project Structure
Select your working folder and mark it as Sources
. Then Pycharm recognize the working folder as a Source folder for the project and you will be able to simply add other files within that folder by using
import filename.py
or
from filename.py import mudule1
=================
Not recommended way:
In Pycharm
you can simply add .
before the .py
file which you are going to import it from the same folder. In your case it will be
from .util import my_functions
Resource
There is a good reference also for more information with example how to implement Package Relative Imports. I would highly recommend to check this page.
Solution 3
Right-click on the folder which you want to be marked as the source > Mark Directory as > Source root.
Solution 4
In my case, it worked only when I omit the extension. Example:
import filename
Solution 5
Note: May be a bit unrelated.
I was facing the same issue but I was unable to import a module in the same directory (rather than subdirectory as asked by OP) when running a jupyter notebook (here the directory didn't have __init__.py). Strangely, I had setup python path and interpreter location and everything. None of the other answers helped but changing the directory in python did.
import os
os.chdir(/path/to/your/directory/)
I'm using PyCharm 2017.3
on Ubuntu 16.04
![Chris](https://i.stack.imgur.com/jKHGm.jpg?s=256&g=1)
Chris
Prior Roles: Research Scientist (Physics, Aerospace, MBSE) @ GTRI: Electro-Optics Systems Lab Research Engineer (Cyber, Digital Signals Processing) @ GTRI/ECE Cyber Security Lab Machine Learning Engineer (Digital Advertising and Analytics) Sr. Software Engineer (Computer Vision, Machine Learning) Top Languages: Python3 C++ C Sports/Extra-curricular: Soccer/Football (the round ball you kick) Tae Kwon Do (amplifying the kicking synergy) Skiing Hobbies: CAD + CNC'ing dofabbles and widgets Salting my living space with tech magazines and cheap Dover books on Mathematics USB protocols Guitar Degrees: B.S. Physics M.S. Computer Science
Updated on December 21, 2020Comments
-
Chris over 3 years
I have an input error in pycharm when debugging and running.
My project structure is rooted properly,
etc./HW3/.
so thatHW3
is the root directory.I have a subfolder in HW3,
util
, and a file,util/util.py
. I have another file inutil
calledrun_tests.py
.In
run_tests.py
, I have the following import structure,from util.util import my_functions, etc.
This yields an input error,
from util.util import load_dataset,proportionate_sample ImportError: No module named 'util.util'; 'util' is not a package
However, in the exact same project, in another directory (same level as
util
) calleddata
, I have a filedata/data_prep.py
, which also imports functions fromutil/util.py
using a similar import statement...and it runs without any problems.
Obviously, I am doing this in the course of doing a homework, so please understand: this is ancillary to the scope of the homework.
The problem goes away when I move the file to another directory. So I guess this question is How do I import a python file located in the same directory in a pycharm project? Because pycharm raises an error if I just do
import util
and prompts me to use the full name from the root.