运行文件夹中的单个 .py 文件
这是最常见的情况,你有一个文件夹,里面有一个或多个 Python 脚本,你想运行其中一个。

假设你的项目结构如下:
my_project/
├── main.py
├── utils.py
└── data/
└── some_data.csv
你想运行 main.py。
方法 1:在终端/命令行中运行(最常用)
-
打开终端 (在 Windows 上是 Command Prompt 或 PowerShell,在 macOS/Linux 上是 Terminal)。
-
使用
cd命令切换到你的项目文件夹,这是最关键的一步。
(图片来源网络,侵删)# 把下面的路径替换成你自己的文件夹路径 cd /path/to/your/my_project
- 提示:如果你把终端路径切换到了
my_project的上一级目录,那么路径应该是cd my_project。 - 提示:如果你把终端路径切换到了
my_project的内部,那么路径就是cd .(当前目录) 或者直接省略cd。
- 提示:如果你把终端路径切换到了
-
使用
python3命令运行脚本:python3 main.py
总结一下步骤:
# 1. 打开终端 # 2. 切换到脚本所在的目录 cd /path/to/your/my_project # 3. 运行脚本 python3 main.py
方法 2:在 IDE(如 VS Code, PyCharm)中运行
- 打开文件夹:在 VS Code 或 PyCharm 中,选择 "File" -> "Open Folder...",然后选择你的
my_project文件夹。 - 选择运行脚本:
- VS Code:打开
main.py文件,在编辑器窗口的右上角,你会看到一个绿色的“播放”按钮 ▶️,点击它即可运行。 - PyCharm:打开
main.py文件,在编辑器窗口的右上角,同样会有一个绿色的“运行”按钮,你也可以右键点击编辑器窗口,选择 "Run 'main'"。
- VS Code:打开
IDE 会自动处理路径切换和调用解释器的工作,非常方便。
运行文件夹中的 __main__.py 文件(作为模块入口)
这是一个更高级的用法,符合 Python 的最佳实践,当你把一个文件夹当作一个可执行的包或模块时,Python 会自动寻找该文件夹下的 __main__.py 文件并执行它。

假设你的项目结构如下:
my_app/
├── __main__.py <-- 这是关键
├── __init__.py
├── module_a.py
└── module_b.py
my_app 文件夹本身就可以被当作一个程序来运行。
如何运行
你不需要先 cd 进去,可以直接在终端中运行这个文件夹:
# 把下面的路径替换成你自己的文件夹路径 python3 /path/to/your/my_app
或者,如果你在 my_app 的上一级目录:
cd /path/to/your/ python3 my_app
会发生什么?
Python 会找到 my_app 文件夹,然后自动执行 __main__.py 文件中的所有代码,这相当于执行了 python3 my_app/__main__.py。
为什么这么做?
这种写法非常优雅,因为它允许你将一个复杂的程序打包成一个文件夹,并且这个文件夹既可以被其他代码 import (通过 import my_app),也可以直接作为独立的脚本运行(通过 python3 my_app)。
让 Python 能找到文件夹中的模块(import 问题)
你的主脚本在 A 文件夹,但你想导入 B 文件夹中的一个模块。B 文件夹不在 Python 的搜索路径中,就会报 ModuleNotFoundError。
假设结构如下:
project_root/
├── main.py
└── src/
├── my_module.py
└── __init__.py
main.py 中想 import src.my_module,但直接运行会报错。
解决方案
运行时添加路径(临时方法)
在 main.py 的开头,添加以下代码,告诉 Python 解释器去哪里找模块:
import sys import os # 将 src 文件夹的路径添加到系统路径中 # os.path.dirname(__file__) 得到当前文件所在的目录 # os.path.join(...) 将路径拼接起来 # os.path.abspath(...) 转换成绝对路径 sys.path.append(os.path.join(os.path.dirname(__file__), 'src')) # 现在就可以正常导入了 from my_module import my_function my_function()
将项目根目录添加到 PYTHONPATH(推荐方法)
PYTHONPATH 是一个环境变量,作用是告诉 Python 解释器除了默认路径外,还应该去哪些目录里找模块。
-
打开终端。
-
设置
PYTHONPATH(以 Linux/macOS 为例):# 把 /path/to/your/project_root 替换成你的项目根目录绝对路径 export PYTHONPATH="/path/to/your/project_root:$PYTHONPATH"
- Windows (CMD):
set PYTHONPATH=C:\path\to\your\project_root - Windows (PowerShell):
$env:PYTHONPATH="C:\path\to\your\project_root"
- Windows (CMD):
-
从任何位置运行
main.py,Python 都能找到src文件夹了:# 你可以在任何位置运行,只要 PYTHONPATH 设置正确 python3 /path/to/your/project_root/main.py
使用虚拟环境和安装(最专业的方法)
如果你在开发一个库或一个可安装的应用,最好的方式是将其“安装”到你的虚拟环境中。
- 在项目根目录创建一个
setup.py文件。 - 使用
pip开发模式安装它:# 确保你在 project_root 目录下 pip install -e .
-e或--editable表示“可编辑模式”,这样你对源代码的修改会立刻生效,无需重新安装。
安装后,你的 src 文件夹中的模块就可以在任何被该虚拟环境管理的 Python 脚本中被直接导入了。
总结与最佳实践
| 场景 | 解决方案 | 优点 | 缺点 |
|---|---|---|---|
| 运行单个脚本 | cd 到文件夹,python3 script.py |
简单直接,适用于一次性任务 | 每次都要 cd,路径硬编码 |
| 将文件夹作为程序入口 | 在文件夹中创建 __main__.py,python3 folder_name |
符合 Pythonic 风格,代码组织清晰 | 需要特定的文件结构 |
解决 import 问题 |
在代码中 sys.path.append(...) |
快速解决,无需外部配置 | 每次修改代码都要改,不灵活 |
解决 import 问题 |
设置 PYTHONPATH 环境变量 |
一劳永逸,不影响系统全局 | 需要手动配置环境变量 |
| 开发可复用项目 | 使用 pip install -e . |
最专业、最灵活,是行业标准 | 需要额外设置 setup.py |
对于初学者,情况一 是你必须掌握的,随着项目变大,情况二 和 情况三 的 PYTHONPATH 方法会非常有用,而 pip install -e . 则是专业开发者的标配。
