Nowadays, It is a common need to run a python script from another script, especially when you are working on larger projects or automating tasks. Whether you are building something small project or organizing code in multiple files, it is helpful to know the different ways to make one Python file run another.
In this post, you will come to know about 5 simple methods to run a python script from another script including how it works in MicroPython. I will explain when to use each method and share real code examples you can try right away.
Let’s get started.
1. Run Another Script Using import
The easiest way to reuse code from another Python file is to use import
. You can call functions or variables directly from one file to another.
When to use it:
- You want to use specific functions, classes, or variables.
- You want to keep your code clean and modular.
Example:
file1.py
def greet():
print("Hello from file1!")
file2.py
import file1
file1.greet()
This method runs only when you call a function or access something directly. It doesn’t run the whole file unless it’s designed in that way.
Please make sure that both files are in the same folder, or use Python’s sys.path
to set the file location.
2. Use os.system()
to Run a Script
The os.system()
method runs another script as if you typed it in the terminal.
When to use it:
- You want a quick, simple way to run a separate script.
- You don’t need to interact with the script’s output.
Example:
import os
os.system("python3 script2.py")
This will open and run script2.py
in the system shell.
⚠️ Be careful:
- You won’t get return values easily.
- It’s slower and less secure than other options.
- It’s not supported in MicroPython.
3. Use subprocess
for More Control
subprocess
is a powerful module that lets you run another script and get its output or errors.
When to use it:
- You want to capture output.
- You’re building a production app.
- You need better error handling.
Example:
import subprocess
subprocess.run(["python3", "script2.py"])
You can even capture output like this:
result = subprocess.run(["python3", "script2.py"], capture_output=True, text=True)
print(result.stdout)
This method is more flexible and secure than os.system()
.
4. Use exec()
to Run a Script’s Code
This method reads another file and runs its code directly.
When to use it:
- You need to run dynamic or changing code.
- You don’t mind some security risks.
Example:
with open("script2.py") as file:
code = file.read()
exec(code)
⚠️ Warning:
Only use this with python scripts you trust. exec()
runs any code it reads, which can be risky if the source isn’t secure.
5. Run A Python Script From Another Script In MicroPython
MicroPython is a lightweight version of Python used in small devices (like Raspberry Pi Pico or ESP32). It doesn’t support subprocess
or os.system()
, so you need simpler methods to run a python script from another.
Best methods for MicroPython:
- Use
import
like this:
import script2
script2.main()
- Use
exec()
if you need to run a file directly:
exec(open("script2.py").read())
These options help you to organize code in multiple files even on limited hardware.
When to Use Each Method (Quick Guide)
Method | Best For | Works in MicroPython? |
---|---|---|
import | Reusing functions or code | ✅ Yes |
os.system() | Quick shell-like execution | ❌ No |
subprocess | Advanced control and output | ❌ No |
exec() | Running full scripts dynamically | ⚠️ Partially |
MicroPython import | Simple script structure | ✅ Yes |
Best Practices
- Use
import
whenever possible. It’s the cleanest and safest method. - Avoid
exec()
oros.system()
unless you know what you’re doing. - Stick to
subprocess
for better control in desktop applications. - In MicroPython, keep things simple and split code into functions for better reuse.
Final Thoughts
Running one Python script from another can be easy, once you understand the options. Whether you’re working on a desktop app, a microcontroller, or a personal automation project, there’s a method that fits your needs.
To recap:
- Use
import
to reuse code. - Use
subprocess
if you need control. - Use
os.system()
for quick tasks. - Use
exec()
carefully. - Use simple
import
in MicroPython.
Try each method and see which one works best for your project!
💬 Your Turn
Have you tried running Python scripts from other scripts before? Which method do you prefer? Drop a comment below, I would love to hear your experience!