杰瑞科技汇

Python3如何直接运行整个文件夹?

运行文件夹中的单个 .py 文件

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

Python3如何直接运行整个文件夹?-图1
(图片来源网络,侵删)

假设你的项目结构如下:

my_project/
├── main.py
├── utils.py
└── data/
    └── some_data.csv

你想运行 main.py

方法 1:在终端/命令行中运行(最常用)

  1. 打开终端 (在 Windows 上是 Command Prompt 或 PowerShell,在 macOS/Linux 上是 Terminal)。

  2. 使用 cd 命令切换到你的项目文件夹,这是最关键的一步。

    Python3如何直接运行整个文件夹?-图2
    (图片来源网络,侵删)
    # 把下面的路径替换成你自己的文件夹路径
    cd /path/to/your/my_project 
    • 提示:如果你把终端路径切换到了 my_project上一级目录,那么路径应该是 cd my_project
    • 提示:如果你把终端路径切换到了 my_project内部,那么路径就是 cd . (当前目录) 或者直接省略 cd
  3. 使用 python3 命令运行脚本

    python3 main.py

总结一下步骤:

# 1. 打开终端
# 2. 切换到脚本所在的目录
cd /path/to/your/my_project
# 3. 运行脚本
python3 main.py

方法 2:在 IDE(如 VS Code, PyCharm)中运行

  1. 打开文件夹:在 VS Code 或 PyCharm 中,选择 "File" -> "Open Folder...",然后选择你的 my_project 文件夹。
  2. 选择运行脚本
    • VS Code:打开 main.py 文件,在编辑器窗口的右上角,你会看到一个绿色的“播放”按钮 ▶️,点击它即可运行。
    • PyCharm:打开 main.py 文件,在编辑器窗口的右上角,同样会有一个绿色的“运行”按钮,你也可以右键点击编辑器窗口,选择 "Run 'main'"。

IDE 会自动处理路径切换和调用解释器的工作,非常方便。


运行文件夹中的 __main__.py 文件(作为模块入口)

这是一个更高级的用法,符合 Python 的最佳实践,当你把一个文件夹当作一个可执行的包或模块时,Python 会自动寻找该文件夹下的 __main__.py 文件并执行它。

Python3如何直接运行整个文件夹?-图3
(图片来源网络,侵删)

假设你的项目结构如下:

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 解释器除了默认路径外,还应该去哪些目录里找模块。

  1. 打开终端

  2. 设置 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"
  3. 从任何位置运行 main.py,Python 都能找到 src 文件夹了:

    # 你可以在任何位置运行,只要 PYTHONPATH 设置正确
    python3 /path/to/your/project_root/main.py

使用虚拟环境和安装(最专业的方法)

如果你在开发一个库或一个可安装的应用,最好的方式是将其“安装”到你的虚拟环境中。

  1. 在项目根目录创建一个 setup.py 文件。
  2. 使用 pip 开发模式安装它:
    # 确保你在 project_root 目录下
    pip install -e .

    -e--editable 表示“可编辑模式”,这样你对源代码的修改会立刻生效,无需重新安装。

安装后,你的 src 文件夹中的模块就可以在任何被该虚拟环境管理的 Python 脚本中被直接导入了。


总结与最佳实践

场景 解决方案 优点 缺点
运行单个脚本 cd 到文件夹,python3 script.py 简单直接,适用于一次性任务 每次都要 cd,路径硬编码
将文件夹作为程序入口 在文件夹中创建 __main__.pypython3 folder_name 符合 Pythonic 风格,代码组织清晰 需要特定的文件结构
解决 import 问题 在代码中 sys.path.append(...) 快速解决,无需外部配置 每次修改代码都要改,不灵活
解决 import 问题 设置 PYTHONPATH 环境变量 一劳永逸,不影响系统全局 需要手动配置环境变量
开发可复用项目 使用 pip install -e . 最专业、最灵活,是行业标准 需要额外设置 setup.py

对于初学者,情况一 是你必须掌握的,随着项目变大,情况二情况三PYTHONPATH 方法会非常有用,而 pip install -e . 则是专业开发者的标配。

分享:
扫描分享到社交APP
上一篇
下一篇