You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行子文件夹Python脚本时将项目根目录加入PYTHONPATH

解决方法

针对你的场景,有几种标准且便捷的方式可以实现将folder_1加入PYTHONPATH,无需手动全局配置:

方法1:使用Python的-m模块运行方式

这是最推荐的标准做法,适合开发阶段快速解决:

  1. 给folder_1、folder_2、folder_3都添加空的__init__.py文件,把它们变成Python可识别的包结构:
- folder_1
    - __init__.py
    - folder_2  
        - __init__.py
        - file1.py
        - file2.py

    - folder_3
        - __init__.py
        - file3.py
  1. 切换到folder_1的上级目录(也就是包含folder_1的那个目录),执行以下命令运行脚本:
python -m folder_1.folder_2.file1

这种方式会自动将当前目录(folder_1的上级目录)加入PYTHONPATH,file1.py里就能用绝对导入:

# file1.py中导入file3的函数
from folder_1.folder_3.file3 import 你的函数名

方法2:在file1.py中动态添加路径

如果不想改运行目录或加__init__.py,可以在file1.py最开头加一段代码,动态把folder_1的路径加入PYTHONPATH:

import os
import sys

# 获取file1.py所在目录的上级目录(即folder_1的路径)
folder_1_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if folder_1_path not in sys.path:
    sys.path.append(folder_1_path)

# 现在可以导入file3中的函数
from folder_3.file3 import 你的函数名

这种方式不用改项目结构或运行命令,适合临时场景,但如果项目目录结构变动,这段代码可能需要调整。

方法3:将项目变为可安装包(适合长期维护的项目)

如果你的项目需要长期开发,推荐用这种方式:

  1. 在folder_1的上级目录创建pyproject.toml文件,内容示例:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "你的项目名"
version = "0.1.0"
packages = ["folder_1"]
  1. 切换到folder_1的上级目录,执行以下命令以可编辑模式安装项目:
pip install -e .

安装后,无论在哪个目录运行脚本,都能直接用绝对导入from folder_1.folder_3.file3 import ...,Python会自动识别包路径。

内容的提问来源于stack exchange,提问作者zjffdu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:42:40