张芷铭的个人博客

多 Python 项目导入问题解决方案:修改 sys.path、设置 PYTHONPATH、优化项目结构、使用 importlib

方案对比

方案优点缺点适用场景
修改 sys.path简单直接需在每个入口添加代码快速调试、脚本开发
设置 PYTHONPATH一次设置全局生效依赖系统配置长期开发
优化项目结构结构规范、依赖明确需创建 setup.py长期维护项目
使用 importlib灵活、避免全局污染语法复杂动态加载场景

方案详解

1. 修改 sys.path

1
2
3
4
import sys, os
project_path = os.path.join(os.path.dirname(__file__), "models", "Practical-RIFE")
sys.path.append(project_path)
from video_interpolation_operator import VideoInterpolationOperator

2. 设置 PYTHONPATH

Linux/MacOS:

1
export PYTHONPATH=/path/to/models/Practical-RIFE:/path/to/models/AMT:$PYTHONPATH

Windows:

1
set PYTHONPATH=C:\path\models\Practical-RIFE;C:\path\models\AMT;%PYTHONPATH%

3. 优化项目结构(推荐)

创建 setup.py

1
2
from setuptools import setup, find_packages
setup(name="practical-rife", version="0.1.0", packages=find_packages())

安装:

1
pip install -e .

4. 使用 importlib

1
2
3
4
import importlib.util, os
spec = importlib.util.spec_from_file_location("module", "/path/to/module.py")
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)

通用建议

  1. 使用虚拟环境隔离依赖
  2. 确保每个子项目包含 __init__.py
  3. 避免循环导入

Comments