How to import a function from another file in Python
Aug 01, 2025 am 06:28 AMFunctions that import another file in Python need to make sure the path is correct and use standard syntax. There are three main situations: 1. Use the from utils import function_name to import in the same directory; 2. The package structure needs to be included in the subdirectory __init__.py and add the root directory through sys.path; 3. Dynamic path import can add relative paths through the Os and sys modules, but be careful to avoid module conflicts. Common errors include spelling errors, incorrect paths, and duplicate names with the standard library, etc., and can be solved by checking them one by one.
Importing functions in another file in Python is actually quite straightforward. Just pay attention to the file structure and module import method. The key point is to make sure that the file you want to import is in the path that can be found in Python, and then use import
or from ... import ...
syntax.

The following situations are more common, let’s take a look at them one by one.
Import files in the same directory
This is the most common situation: two files are in the same folder, for example, if you have main.py
and utils.py
, you want to use the functions in utils.py
in main.py

Assume that utils.py
has:
def says_hello(): print("Hello from utils!")
Then you can write it like this in main.py
:

from utils import says_hello say_hello()
This way you can call say_hello()
function directly.
Notes:
- Both files must be in the same directory
- Do not give file names keywords or standard library names other than
utils.py
(such asmath.py
,os.py
) - If you report
ModuleNotFoundError
error when running, please check whether the file name spelling and path are correct
Module import in subdirectories
If your project structure is relatively complex, for example, it has the following structure:
project/ │ ├── main.py └── mymodule/ ├── __init__.py └── tools.py
You want to import the functions in tools.py
in main.py
, such as:
from mymodule.tools import do_something
There are several prerequisites at this time:
-
mymodule
is a package that must contain a__init__.py
file (the content can be empty) - Make sure
main.py
andmymodule
are in the same directory - The import statement should be written in the full path (relative to the project root directory)
If you encounter problems during runtime, you can try adding the root directory of the project to sys.path
, for example:
import sys from pathlib import Path sys.path.append(str(Path(__file__).parent)) from mymodule.tools import do_something
This way Python can find your module.
Dynamic path import (suitable for more flexible scenarios)
Sometimes your file structure is more flexible, or if you want the script to run under different paths, you can use relative paths or dynamically add paths.
For example:
import os import sys # Get the directory where the current file is located current_dir = os.path.dirname(os.path.abspath(__file__)) # Add the previous directory to sys.path parent_dir = os.path.join(current_dir, '..') sys.path.append(parent_dir) from utils import says_hello
This way, even if you move the script to run somewhere else, you can make sure the path is correct. However, be careful in this method, don't add too many paths, otherwise it will easily cause module conflicts.
Common errors and solutions
Sometimes you will encounter all kinds of strange mistakes, such as:
-
ModuleNotFoundError
: Module not found -
ImportError
: Found the module but cannot find the function you want to import -
AttributeError
: The module does not have the function or variable you call
Common Cases and Solutions:
- ? Check whether the file name is spelled correctly (case sensitive)
- ? Make sure the module files are in the paths that can be searched in Python
- ? Do not give modules the same name as the standard library (such as
random.py
,os.py
) - ? If it is a package, remember to add
__init__.py
- ? If the path is wrong, manually add the path to
sys.path
Basically that's it. Importing functions is not complicated, but details are prone to errors, especially path problems. As long as the structure is clear and the naming is standardized, there will generally be no problems.
The above is the detailed content of How to import a function from another file in Python. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Polymorphism is a core concept in Python object-oriented programming, referring to "one interface, multiple implementations", allowing for unified processing of different types of objects. 1. Polymorphism is implemented through method rewriting. Subclasses can redefine parent class methods. For example, the spoke() method of Animal class has different implementations in Dog and Cat subclasses. 2. The practical uses of polymorphism include simplifying the code structure and enhancing scalability, such as calling the draw() method uniformly in the graphical drawing program, or handling the common behavior of different characters in game development. 3. Python implementation polymorphism needs to satisfy: the parent class defines a method, and the child class overrides the method, but does not require inheritance of the same parent class. As long as the object implements the same method, this is called the "duck type". 4. Things to note include the maintenance

Parameters are placeholders when defining a function, while arguments are specific values ??passed in when calling. 1. Position parameters need to be passed in order, and incorrect order will lead to errors in the result; 2. Keyword parameters are specified by parameter names, which can change the order and improve readability; 3. Default parameter values ??are assigned when defined to avoid duplicate code, but variable objects should be avoided as default values; 4. args and *kwargs can handle uncertain number of parameters and are suitable for general interfaces or decorators, but should be used with caution to maintain readability.

Iterators are objects that implement __iter__() and __next__() methods. The generator is a simplified version of iterators, which automatically implement these methods through the yield keyword. 1. The iterator returns an element every time he calls next() and throws a StopIteration exception when there are no more elements. 2. The generator uses function definition to generate data on demand, saving memory and supporting infinite sequences. 3. Use iterators when processing existing sets, use a generator when dynamically generating big data or lazy evaluation, such as loading line by line when reading large files. Note: Iterable objects such as lists are not iterators. They need to be recreated after the iterator reaches its end, and the generator can only traverse it once.

A class method is a method defined in Python through the @classmethod decorator. Its first parameter is the class itself (cls), which is used to access or modify the class state. It can be called through a class or instance, which affects the entire class rather than a specific instance; for example, in the Person class, the show_count() method counts the number of objects created; when defining a class method, you need to use the @classmethod decorator and name the first parameter cls, such as the change_var(new_value) method to modify class variables; the class method is different from the instance method (self parameter) and static method (no automatic parameters), and is suitable for factory methods, alternative constructors, and management of class variables. Common uses include:

The key to dealing with API authentication is to understand and use the authentication method correctly. 1. APIKey is the simplest authentication method, usually placed in the request header or URL parameters; 2. BasicAuth uses username and password for Base64 encoding transmission, which is suitable for internal systems; 3. OAuth2 needs to obtain the token first through client_id and client_secret, and then bring the BearerToken in the request header; 4. In order to deal with the token expiration, the token management class can be encapsulated and automatically refreshed the token; in short, selecting the appropriate method according to the document and safely storing the key information is the key.

Python's magicmethods (or dunder methods) are special methods used to define the behavior of objects, which start and end with a double underscore. 1. They enable objects to respond to built-in operations, such as addition, comparison, string representation, etc.; 2. Common use cases include object initialization and representation (__init__, __repr__, __str__), arithmetic operations (__add__, __sub__, __mul__) and comparison operations (__eq__, ___lt__); 3. When using it, make sure that their behavior meets expectations. For example, __repr__ should return expressions of refactorable objects, and arithmetic methods should return new instances; 4. Overuse or confusing things should be avoided.

Pythonmanagesmemoryautomaticallyusingreferencecountingandagarbagecollector.Referencecountingtrackshowmanyvariablesrefertoanobject,andwhenthecountreacheszero,thememoryisfreed.However,itcannothandlecircularreferences,wheretwoobjectsrefertoeachotherbuta

Python's garbage collection mechanism automatically manages memory through reference counting and periodic garbage collection. Its core method is reference counting, which immediately releases memory when the number of references of an object is zero; but it cannot handle circular references, so a garbage collection module (gc) is introduced to detect and clean the loop. Garbage collection is usually triggered when the reference count decreases during program operation, the allocation and release difference exceeds the threshold, or when gc.collect() is called manually. Users can turn off automatic recycling through gc.disable(), manually execute gc.collect(), and adjust thresholds to achieve control through gc.set_threshold(). Not all objects participate in loop recycling. If objects that do not contain references are processed by reference counting, it is built-in
