Skip to content

Latest commit

 

History

History
116 lines (88 loc) · 4.59 KB

File metadata and controls

116 lines (88 loc) · 4.59 KB

English | 한국어

PythonEmbed

CI Maven Central Gradle Plugin Portal codecov License

Java에서 Python 코드를 실행하세요 — 완전한 CPython 호환성, 설정 불필요.

PythonEmbed는 서브프로세스 + MessagePack 바이너리 프로토콜을 통해 실제 CPython 인터프리터를 JVM 애플리케이션에 내장합니다. 순수 Java와 CPython만으로 동작하며, 모든 C 확장(numpy, scipy, torch)이 그대로 작동합니다.

📚 전체 문서: howtis.github.io/python-embed

빠른 시작

=== "Gradle"

`build.gradle`에 Gradle 플러그인을 추가하세요:

```groovy
plugins {
    id 'io.github.howtis.python-embed' version '1.0.2'
}

pythonEmbed {
    packages = ['numpy']
}

dependencies {
    implementation 'io.github.howtis:python-embed-runtime:1.0.2'
}
```

=== "Maven"

`pom.xml`에 Maven 플러그인을 추가하세요:

```xml
<dependencies>
    <dependency>
        <groupId>io.github.howtis</groupId>
        <artifactId>python-embed-runtime</artifactId>
        <version>1.0.2</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>io.github.howtis</groupId>
            <artifactId>python-embed-maven-plugin</artifactId>
            <version>1.0.2</version>
            <executions>
                <execution>
                    <goals><goal>setup</goal></goals>
                </execution>
            </executions>
            <configuration>
                <packages>
                    <package>numpy</package>
                </packages>
            </configuration>
        </plugin>
    </plugins>
</build>
```

이제 Java 코드에서 사용하면 됩니다:

try (PythonEmbed py = PythonEmbed.create()) {
    py.exec("import numpy as np");
    int sum = py.eval("sum([1, 2, 3])").asInt();
    System.out.println(sum);  // 6
}

빌드 플러그인이 Python 설치, venv 생성, 패키지 설치를 빌드 시점에 자동으로 처리합니다.

주요 기능

분류 특징
호환성 완전한 CPython — numpy, scipy, torch, matplotlib, 모든 C 확장 지원
설정 수동 작업 불필요 — Gradle 플러그인이 필요 시 Python 자동 다운로드
안전성 서브프로세스 격리 — Python 크래시가 JVM에 영향을 주지 않음
성능 MessagePack 바이너리 프로토콜
동시성 자동 확장 풀, 비동기 CompletableFuture API 지원
통합 Spring Boot 자동 구성, Actuator HealthIndicator
상호운용 객체 핸들, Java 프록시, 콜백, 스트리밍, 배치 작업
관측성 헬스 체크, SLF4J 로그 포워딩, 종료 훅

📚 전체 문서 & API 레퍼런스 →

모듈

빌드

./gradlew build

요구 사항: JDK 17+, Python 3.8+ (없으면 자동 다운로드).

라이선스

MIT — 자세한 내용은 LICENSE를 참고하세요.