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

Python脚本跨目录导入模块:终端运行报错的优雅解决方案咨询

优雅解决Python脚本跨目录导入问题

针对你项目src/core和src/bin的结构,解决终端运行bin脚本时无法导入core模块的问题,有以下几种更优雅的方案:

1. 配置PYTHONPATH环境变量

直接把项目根目录加入PYTHONPATH,让Python自动识别src下的模块:

  • 临时生效:每次打开终端后执行(Linux/macOS):
    export PYTHONPATH=/绝对路径/到你的项目根目录
    
    Windows命令行:
    set PYTHONPATH=C:\绝对路径\到你的项目根目录
    
  • 永久生效:把上述命令添加到shell配置文件(比如~/.bashrc、~/.zshrc),或者Windows的系统环境变量里,这样每次终端启动都会自动加载。

2. 用setup.py/pyproject.toml将项目转为可安装包

这是最规范的做法,适合长期维护的项目:

  1. 在项目根目录创建setup.py文件,内容示例:
    from setuptools import setup, find_packages
    
    setup(
        name="your-project",
        version="0.1.0",
        packages=find_packages(where="src"),
        package_dir={"": "src"},
        # 可选:把bin里的脚本注册为系统命令
        entry_points={
            "console_scripts": [
                "my-script = src.bin.your_script:main",
            ],
        },
    )
    
  2. 在项目根目录执行开发模式安装:
    pip install -e .
    

安装后,不管在哪个目录,都能直接import core模块,还能通过my-script命令直接运行bin里的脚本(如果配置了entry_points)。

3. 使用Python的-m参数运行脚本

把项目当作包结构来运行,不用修改sys.path:
比如你的bin脚本是src/bin/run.py,直接在项目根目录执行:

python -m src.bin.run

此时脚本里可以用相对导入from ..core import xxx,或者直接import core(因为项目根在sys.path里)。

4. 添加.pth文件到site-packages

在项目根目录创建一个my-project.pth文件,内容是项目根的绝对路径,比如:

/Users/xxx/Projects/your-project-root

然后把这个文件复制到你的虚拟环境的site-packages目录下(比如venv/lib/python3.x/site-packages),Python启动时会自动把这个路径加入sys.path。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:45:02