seong

Flutter - Flutter with Python (1) 본문

Flutter/Flutter

Flutter - Flutter with Python (1)

hyeonseong 2024. 5. 17. 15:53

서버에서 파이썬 결과값을 API호출해서 하는 것도 편한 방법이지만, 그럼 서버 개발자도 필요하다.

Flutter에서 한번에 모두 처리 하는게 가능 한지 찾아 본 후 방법을 찾아서 실행 했다.

파이썬 스크립트 파일을 Flutter에서 그냥 실행 하는 방법도 있음!
대신 정말 실행 만 하기 때문에 변수를 전달 하지 못하는 단점도 있다.

 

 

MacOS 으로 실행( Windows도 동일한 방식 적용 가능)

Flutter version : 3.22.0 (Dart의 버전이 3.15보다 높아야 실행이 가능하다)

 

역할

Flutter

- UI 역할, Python 스크립트를 실행 시킨 후 결과 값을 불러와서 Flutter View로 보여주는 역할

 

Python 

- Flutter의 어떤 트리거를 통해 실행 되어 결과 값을 Flutter로 전달하는 역할

 

https://pub.dev/packages/serious_python/example

 

serious_python example | Flutter package

A cross-platform plugin for adding embedded Python runtime to your Flutter apps.

pub.dev


1. 파이썬 코드 실행에 필요한 라이브 러리 설치

  serious_python: ^0.7.0
  path_provider: ^2.1.3

 

2. macos에서 실행 위해서 아래 명령어 먼저 실행

// python 파일을 프로젝트 내 폴더로 패키징
dart run serious_python:main package app/src

위 명령어를 실행 후 python 파일을 Flutter프로젝트 내부에 app이라는 폴더를 따로 생성후 넣어주어야한다
폴더에 넣었다면 Flutter에서 pubspec.yaml 파일로 가서 assets경로를 잡아주면 된다.

 

3. 프로젝트 내부에 app폴더 생성 해 python 파일 생성.

- 파이썬 파일에 간단한 1~10까지 더하는 함수가 작성되어있다.(아래는 파이썬 코드)

def sum_numbers():
    total = 0
    for i in range(1, 11):
        total += i
    return total

result = sum_numbers()
print("1부터 10까지의 합:", result)

 

4. pubspec.yaml파일에 경로 추가

 

5. Flutter 코드 작성 

import 'package:flutter/material.dart';
import 'package:serious_python/serious_python.dart';

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final String _pyFile = "app/test.py";

  @override
  void initState() {
    super.initState();
  }

  Future<void> runPython() async {
    // Python 파일 실행
    await SeriousPython.run(_pyFile, sync: false);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            runPython();
          },
          child: const Text(
            "파이썬 코드 실행",
            style: TextStyle(
              fontSize: 18,
              fontWeight: FontWeight.bold,
              color: Colors.black,
            ),
          ),
        ),
      ),
    );
  }
}

 

5. 결과 확인


실행 도중 발생한 에러 

MacOS의 최소 사양이 10.15버전 이상이어야 한다는 내용이고, pod install도 같이 해달라는 내용이다.

Error: The plugin "serious_python_darwin" requires a higher minimum macOS deployment version than your application is targeting.
To build, increase your application's deployment target to at least 10.15 as described at https://docs.flutter.dev/deployment/macos
Error: Error running pod install

해결 방안 

1. 터미널에서 Xcode Open 명령어 실행

open macos/Runner.xcworkspace

 

2. Runner -> macOS의 버전을 10.15로 변경

ex) 10.14 -> 10.15

 

3. macos폴더로 이동해서 pod를 설치

cd macos
pod install

 

 

4. flutter 다시 빌드 

flutter clean
flutter run

 

 

이번 글에서는 Python을 실행 시키는 것 까지만 실행

Flutter에서 파이썬을 실행 -> 실행한 결과 값을 Flutter에서 받아서 View로 보여주는 것은 다음 글에서!