Call a function from another file?
PythonFileFunctionImportPython Problem Overview
Set_up: I have a .py file for each function I need to use in a program.
In this program, I need to call the function from the external files.
I've tried:
from file.py import function(a,b)
But I get the error:
> ImportError: No module named 'file.py'; file is not a package
How do I fix this problem?
Python Solutions
Solution 1 - Python
There isn't any need to add file.py
while importing. Just write from file import function
, and then call the function using function(a, b)
. The reason why this may not work, is because file
is one of Python's core modules, so I suggest you change the name of your file.
Note that if you're trying to import functions from a.py
to a file called b.py
, you will need to make sure that a.py
and b.py
are in the same directory.
Solution 2 - Python
First of all you do not need a .py
.
If you have a file a.py
and inside you have some functions:
def b():
# Something
return 1
def c():
# Something
return 2
And you want to import them in z.py
you have to write
from a import b, c
Solution 3 - Python
If your file is in the different package structure and you want to call it from a different package, then you can call it in that fashion:
Let's say you have following package structure in your python project:
in - com.my.func.DifferentFunction
python file you have some function, like:
def add(arg1, arg2):
return arg1 + arg2
def sub(arg1, arg2) :
return arg1 - arg2
def mul(arg1, arg2) :
return arg1 * arg2
And you want to call different functions from Example3.py
, then following way you can do it:
Define import statement in Example3.py
- file for import all function
from com.my.func.DifferentFunction import *
or define each function name which you want to import
from com.my.func.DifferentFunction import add, sub, mul
Then in Example3.py
you can call function for execute:
num1 = 20
num2 = 10
print("\n add : ", add(num1,num2))
print("\n sub : ", sub(num1,num2))
print("\n mul : ", mul(num1,num2))
Output:
add : 30
sub : 10
mul : 200
Solution 4 - Python
You can do this in 2 ways. First is just to import the specific function you want from file.py. To do this use
from file import function
Another way is to import the entire file
import file as fl
Then you can call any function inside file.py using
fl.function(a,b)
Solution 5 - Python
You can call the function from a different directory as well, in case you cannot or do not want to have the function in the same directory you are working. You can do this in two ways (perhaps there are more alternatives, but these are the ones that have worked for me).
Alternative 1 Temporarily change your working directory
import os
os.chdir("**Put here the directory where you have the file with your function**")
from file import function
os.chdir("**Put here the directory where you were working**")
Alternative 2 Add the directory where you have your function to sys.path
import sys
sys.path.append("**Put here the directory where you have the file with your function**")
from file import function
Solution 6 - Python
Came across the same feature but I had to do the below to make it work.
If you are seeing 'ModuleNotFoundError: No module named', you probably need the dot(.) in front of the filename as below;
> from .file import funtion
Solution 7 - Python
Functions from .py file (can (of course) be in different directory) can be simply imported by writing directories first and then the file name without .py extension:
from directory_name.file_name import function_name
And later be used: function_name()
Solution 8 - Python
Rename the module to something other than 'file'.
Then also be sure when you are calling the function that:
1)if you are importing the entire module, you reiterate the module name when calling it:
import module
module.function_name()
or
import pizza
pizza.pizza_function()
2)or if you are importing specific functions, functions with an alias, or all functions using *, you don't reiterate the module name:
from pizza import pizza_function
pizza_function()
or
from pizza import pizza_function as pf
pf()
or
from pizza import *
pizza_function()
Solution 9 - Python
First save the file in .py format (for example, my_example.py
).
And if that file have functions,
def xyz():
--------
--------
def abc():
--------
--------
In the calling function you just have to type the below lines.
file_name: my_example2.py
============================
import my_example.py
a = my_example.xyz()
b = my_example.abc()
============================
Solution 10 - Python
Inside MathMethod.Py.
def Add(a,b):
return a+b
def subtract(a,b):
return a-b
Inside Main.Py
import MathMethod as MM
print(MM.Add(200,1000))
Output:1200
Solution 11 - Python
append a dot .
in front of a file name if you want to import this file which is in the same directory where you are running your code.
For example, I'm running a file named a.py
and I want to import a method named addFun
which is written in b.py
, and b.py
is there in the same directory
from .b import addFun
Solution 12 - Python
You don't have to add file.py
.
Just keep the file in the same location with the file from where you want to import it. Then just import your functions:
from file import a, b
Solution 13 - Python
Solution1: In one file myfun.py
define any function(s).
# functions
def Print_Text():
print( 'Thank You')
def Add(a,b):
c=a+b
return c
In the other file:
#Import defined functions
from myfun import *
#Call functions
Print_Text()
c=Add(1,2)
Solution2: if this above solution did not work for Colab
- Create a folder
myfun
- Inside this folder create a file
__init__.py
- Write all your functions in
__init__.py
- Import your functions from Colab notebook
from myfun import *
Solution 14 - Python
You should have the file at the same location as that of the Python files you are trying to import. Also 'from file import function' is enough.
Solution 15 - Python
Any of the above solutions didn't work for me. I got ModuleNotFoundError: No module named whtever
error.
So my solution was importing like below
from . import filename # without .py
inside my first file I have defined function fun like below
# file name is firstFile.py
def fun():
print('this is fun')
inside the second file lets say I want to call the function fun
from . import firstFile
def secondFunc():
firstFile.fun() # calling `fun` from the first file
secondFunc() # calling the function `secondFunc`
Solution 16 - Python
Suppose the file you want to call is anotherfile.py and the method you want to call is method1, then first import the file and then the method
from anotherfile import method1
if method1 is part of a class, let the class be class1, then
from anotherfile import class1
then create an object of class1, suppose the object name is ob1, then
ob1 = class1()
ob1.method1()
Solution 17 - Python
in my case i named my file helper.scrap.py
and couldn't make it work until i changed to helper.py
Solution 18 - Python
in my main script detectiveROB.py
file i need call passGen
function which generate password hash and that functions is under modules\passwordGen.py
The quickest and easiest solution for me is
Below is my directory structure
So in detectiveROB.py
i have import my function with below syntax
from modules.passwordGen import passGen
Solution 19 - Python
Just a quick suggestion, Those who believe in auto-import by pressing alt+ enter in Pycharm and cannot get help.
Just change the file name from where you want to import by: right-clicking on the file and clicking on refactor-> rename. Your auto-import option will start coming up