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

Python脚本模块化拆分及跨模块导入问题解决方案咨询

标准模块化拆分方案

项目结构

data_analyzer_project/
├── data_analyzer/
│   ├── __init__.py
│   ├── data/
│   │   ├── __init__.py
│   │   ├── loader.py       # 数据导入逻辑
│   │   └── cleaner.py      # 数据清洗逻辑
│   ├── analysis/
│   │   ├── __init__.py
│   │   ├── height_sum.py   # 身高求和分析
│   │   ├── age_mean.py     # 年龄均值分析
│   │   └── height_age_product.py  # 身高年龄乘积分析
│   └── presentation/
│       ├── __init__.py
│       └── display.py      # 结果展示逻辑
├── entrypoints/
│   ├── __init__.py
│   ├── main_height_sum.py
│   ├── main_age_mean.py
│   └── main_height_age_product.py
├── pyproject.toml
├── setup.py
└── README.md

核心模块代码示例

1. 数据导入模块 (data_analyzer/data/loader.py)

import pandas as pd

def load_data(file_path: str):
    """从CSV文件加载原始数据"""
    return pd.read_csv(file_path)

2. 数据清洗模块 (data_analyzer/data/cleaner.py)

import pandas as pd

def clean_data(raw_data: pd.DataFrame) -> pd.DataFrame:
    """处理缺失值、转换数据类型,返回清洗后的数据集"""
    cleaned_data = raw_data.dropna(subset=['height', 'age'])
    cleaned_data['height'] = cleaned_data['height'].astype(float)
    cleaned_data['age'] = cleaned_data['age'].astype(int)
    return cleaned_data

3. 身高求和分析模块 (data_analyzer/analysis/height_sum.py)

import pandas as pd

def calculate_height_sum(cleaned_data: pd.DataFrame) -> float:
    """计算有效身高的总和"""
    return cleaned_data['height'].sum()

4. 结果展示模块 (data_analyzer/presentation/display.py)

def display_result(title: str, result):
    """格式化展示分析结果"""
    print(f"=== {title} ===")
    print(result)
    print("==============")

独立入口脚本示例(以身高求和为例)

entrypoints/main_height_sum.py

from data_analyzer.data.loader import load_data
from data_analyzer.data.cleaner import clean_data
from data_analyzer.analysis.height_sum import calculate_height_sum
from data_analyzer.presentation.display import display_result

def main():
    # 步骤1:导入并清洗数据
    raw_data = load_data("sample_data.csv")  # 替换为你的实际数据路径
    cleaned_data = clean_data(raw_data)
    
    # 步骤2:执行分析计算
    height_sum = calculate_height_sum(cleaned_data)
    
    # 步骤3:展示结果
    display_result("身高总和分析", f"所有有效身高总和: {height_sum:.2f} cm")

if __name__ == "__main__":
    main()

其他入口脚本(main_age_mean.py、main_height_age_product.py)逻辑一致,仅需替换对应的分析模块引用。


配置文件

pyproject.toml

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "data-analyzer"
version = "0.1.0"
authors = [
  { name="Your Name", email="your.email@example.com" }
]
description = "Modular data analysis tool for height and age metrics"
readme = "README.md"
requires-python = ">=3.8"
dependencies = [
  "pandas>=2.0"
]

[project.scripts]
analyze-height-sum = "entrypoints.main_height_sum:main"
analyze-age-mean = "entrypoints.main_age_mean:main"
analyze-height-age-product = "entrypoints.main_height_age_product:main"

setup.py

from setuptools import setup

setup()

解决导入问题的关键操作

  1. 安装开发版包:在项目根目录执行以下命令,将data_analyzer包安装为可编辑模式,Python会全局识别该包,彻底解决模块找不到的问题:

    pip install -e .
    
  2. 使用绝对导入:所有入口脚本和核心模块间的引用均使用绝对导入(如from data_analyzer.data.loader import load_data),避免相对导入的路径限制。

  3. 独立入口目录:将所有任务入口脚本放在entrypoints目录下,与核心业务代码分离,既保证职责清晰,也避免运行时的路径混乱。


运行方式

  • 直接运行脚本:
    python entrypoints/main_height_sum.py
    
  • 使用安装后的命令:
    analyze-height-sum
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:30:41