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

Python项目中sendApp/receiveApp无法导入common模块,求解决方案

问题分析与解决方案

你的问题根源很明确:直接运行sendApp/sendApp.py或ReceiveApp/receiveApp.py时,Python会把脚本所在的子目录(比如testApp/sendApp)加入sys.path,但项目根目录testApp不在路径里,所以找不到common模块。

方案一:设置PYTHONPATH(可行且适配你的shell启动场景)

这是最直接的解决办法,完全符合你用shell脚本启动的需求:

  • 在启动脚本里,先把testApp的绝对路径添加到PYTHONPATH环境变量中,示例脚本(假设脚本放在testApp目录下):
    # 将当前目录(testApp)加入Python路径
    export PYTHONPATH=$(pwd):$PYTHONPATH
    # 启动各个子应用
    python sendApp/sendApp.py
    python ReceiveApp/receiveApp.py
    
    这样所有子应用就能和app.py一样,直接用from common.example import whatever导入模块。

方案二:将项目转为可编辑安装包(更优的长期维护方案)

如果你的项目会持续迭代,推荐用这种方式,彻底解决模块导入问题:

  1. 在testApp目录下创建pyproject.toml文件,内容如下:
    [build-system]
    requires = ["setuptools>=61.0"]
    build-backend = "setuptools.build_meta"
    
    [project]
    name = "testApp"
    version = "0.1.0"
    
  2. 在testApp目录下执行命令,以开发模式安装包:
    pip install -e .
    
    安装完成后,无论你在哪个目录运行子应用,都能直接导入common模块,Python会自动识别项目结构,而且后续修改代码无需重新安装,非常适合开发阶段使用。

不推荐的做法

不要在子应用代码里硬编码修改sys.path(比如import sys; sys.path.append('../')),这种方式依赖脚本的运行目录,一旦启动路径变化就会报错,维护性很差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:33:15