Java 项目结构 vs Python 项目结构:如何快速搭一个可跑项目

目录

一、这篇文章怎么用

二、先给你一张总览对照

三、为什么项目结构这么重要

[四、Java 项目结构(最常见)](#四、Java 项目结构(最常见))

[五、Python 项目结构(最常见)](#五、Python 项目结构(最常见))

六、入口文件对照

七、依赖管理对照

八、构建/运行方式对照

九、包与模块的放法

十、配置文件放哪里

十一、日志放哪里

十二、测试代码放哪里

十三、快速搭一个可跑项目(Java)

十四、快速搭一个可跑项目(Python)

十五、常见目录/文件对照表

[十六、Java 选手最关心的 10 个问题(直白回答)](#十六、Java 选手最关心的 10 个问题(直白回答))

[十七、一个更规范的 Python 项目结构(推荐)](#十七、一个更规范的 Python 项目结构(推荐))

[十八、Java → Python 迁移时的结构改造思路](#十八、Java → Python 迁移时的结构改造思路)

补充说明


一、这篇文章怎么用

如果你会 Java,但刚学 Python,最容易卡住的不是语法,而是"项目怎么搭、目录怎么放、怎么跑起来"。这篇文章就用最通俗的方式,把 Java 项目结构和 Python 项目结构一一对照,让你一眼明白。

写作风格:具体、直白、可照抄。每一节都给出"Java 写法/结构 → Python 写法/结构"的对照。

二、先给你一张总览对照

  • Java 项目:Maven/Gradle + src/main/java + resources + target/build
  • Python 项目:venv + requirements.txt + package 目录 + main.py
  • Java 入口:public static void main → Python 入口:if name == 'main':
  • Java 依赖:pom.xml / build.gradle → Python 依赖:requirements.txt
  • Java 打包:jar/war → Python 打包:wheel/可执行脚本

三、为什么项目结构这么重要

你在 Java 里写项目,一般不会把所有代码堆在一个文件里,因为:

  • 人多协作,不分层会乱
  • 有配置文件、资源文件、日志、测试代码
  • 构建工具需要固定目录结构

Python 也是一样。只是 Python 没有硬性规定,但不代表随便放。你要做"能跑 + 好找 + 好维护"。

四、Java 项目结构(最常见)

先看 Maven 项目:

project-root/

src/

main/

java/

com/example/app/

App.java

resources/

application.yml

test/

java/

com/example/app/

AppTest.java

pom.xml

一句话理解:Java 结构固定,分层清晰,构建工具靠目录识别。

五、Python 项目结构(最常见)

一个最常见的 Python 小项目结构:

project-root/

venv/ (或 .venv/)

app/

init.py

main.py

service.py

tests/

test_main.py

requirements.txt

一句话理解:Python 没有固定模板,但推荐"代码包 + 测试 + 依赖"。

六、入口文件对照

Java 的入口是 main;Python 的入口是 if name == 'main'。

// Java

public class App {

public static void main(String[] args) {

System.out.println("hello");

}

}

Python

def main():

print("hello")

if name == 'main':

main()

一句话理解:Python 用 if 来判断"直接运行还是被导入"。

七、依赖管理对照

Java 依赖写在 pom.xml 或 build.gradle。Python 依赖写在 requirements.txt。

// Java (pom.xml 片段)

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

Python (requirements.txt)

flask==3.0.0

requests==2.31.0

一句话理解:Java 依赖随项目走;Python 依赖随环境走。

八、构建/运行方式对照

Java 通常要先编译后运行;Python 是解释执行。

// Java

mvn clean package

java -jar target/app.jar

Python

python app/main.py

一句话理解:Python 不需要编译,但需要虚拟环境。

九、包与模块的放法

Java 包名靠目录 + package 声明;Python 包名靠文件夹 + init.py。

// Java

package com.example.app.service;

Python

app/service.py

一句话理解:Java 通过 package 绑定目录,Python 通过文件夹组织模块。

十、配置文件放哪里

Java 常见:resources/application.yml;Python 常见:config.py / .env。

Python (config.py)

DEBUG = True

DB_URL = "sqlite:///test.db"

一句话理解:Python 配置不固定,但建议独立文件,不要散在代码里。

十一、日志放哪里

Java 多用 logback/log4j;Python 用 logging 标准库。

Python

import logging

logging.basicConfig(level=logging.INFO)

logging.info("start")

一句话理解:Python 有内置日志,不需要额外装依赖。

十二、测试代码放哪里

Java 用 src/test/java;Python 常用 tests/。

tests/test_main.py

def test_add():

assert 1 + 1 == 2

一句话理解:Python 测试更轻量,放 tests 目录即可。

十三、快速搭一个可跑项目(Java)

这里用最小 Spring Boot 举例,结构清晰,能跑起来:

project-root/

src/main/java/com/demo/App.java

src/main/resources/application.yml

pom.xml

// App.java

@SpringBootApplication

public class App {

public static void main(String[] args) {

SpringApplication.run(App.class, args);

}

}

一句话理解:一个类 + 一个配置文件就能跑。

十四、快速搭一个可跑项目(Python)

这里用 Flask 举例:

project-root/

app/

init.py

main.py

requirements.txt

app/main.py

from flask import Flask

app = Flask(name)

@app.route('/')

def hello():

return 'hello'

if name == 'main':

app.run()

一句话理解:一个文件就能启动 Web。

十五、常见目录/文件对照表

  • Java src/main/java → Python app/ 或 src/
  • Java src/main/resources → Python config/ 或直接 config.py
  • Java pom.xml → Python requirements.txt
  • Java target/ → Python pycache/ (可忽略)

十六、Java 选手最关心的 10 个问题(直白回答)

  1. Python 没有 Maven/Gradle?→ 有 pip + venv,依赖写 requirements.txt。

  2. Python 的 main 在哪?→ 任何文件里都可以,但建议 main.py

  3. Python 项目要不要分层?→ 需要,至少分 controller/service/dao。

  4. Python 资源文件放哪?→ 放 config/ 或 resources/,自己定但要固定。

  5. Python 怎么打包?→ 简单项目直接运行,工程化可用 wheel/pyinstaller。

  6. Python 测试怎么跑?→ pytest 一行命令即可。

  7. Python 配置多环境怎么做?→ 用 .env 或 config.py + 环境变量。

  8. Python 依赖版本怎么锁?→ requirements.txt 写死版本号。

  9. Python 项目入口怎么写清楚?→ 统一用 main.py + if name == 'main':

  10. Python 要不要写 init.py?→ 要,保证包识别。

十七、一个更规范的 Python 项目结构(推荐)

project-root/

app/

init.py

main.py

controller/

init.py

user_controller.py

service/

init.py

user_service.py

dao/

init.py

user_dao.py

config/

settings.py

tests/

test_user.py

requirements.txt

一句话理解:和 Java 分层一模一样,只是目录名字更随意。

十八、Java → Python 迁移时的结构改造思路

  • 把 controller/service/dao 直接搬到 Python 目录,名字用小写+下划线
  • 每个 Java 类文件,对应一个 Python .py 文件
  • Java 的 resources,改成 Python 的 config 文件夹
  • Java 的 main 类,改成 Python main.py

一句话理解:结构不变,语法变。这样迁移成本最低。

补充说明

Java 项目是"规范模板",Python 项目是"约定模板"。你可以沿用 Java 的分层习惯,只是把每层放进 Python 的包里。这样你会很舒服,不会迷路。

Python 项目里尽量保证:入口清楚、配置集中、业务分层、测试目录独立。只要做到这四点,项目结构就不会乱。

如果你一个人写小脚本,可以只用一个 main.py;但一旦项目超过 5 个文件,就建议拆目录。

相关推荐
JavaGuide2 小时前
一款悄然崛起的国产规则引擎,让业务编排效率提升 10 倍!
java·spring boot
吃虫子的人2 小时前
记录使用Arthas修改线上源码重新加载的一次过程
java·arthas
一晌小贪欢2 小时前
Python 爬虫进阶:如何利用反射机制破解常见反爬策略
开发语言·爬虫·python·python爬虫·数据爬虫·爬虫python
躺平大鹅2 小时前
5个实用Python小脚本,新手也能轻松实现(附完整代码)
python
阿猿收手吧!2 小时前
【C++】异步编程:std::async终极指南
开发语言·c++
yukai080082 小时前
【最后203篇系列】039 JWT使用
python
figo10tf2 小时前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端