Skip to content
조회 수 31254 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

자바스크립트 종말각?! HTML에서 파이썬 실행하는 PyScript 등장!

 

 

이건 정말 놀라운 일이네.

파이썬 사용자가 얼마나 많은데,,,,

이제 혁명적인 브라우저 기능을 제공하겠구만!

 

 


 

<html>

<head>

<script defer src="https://pyscript.net/alpha/pyscript.js"></script>

<link rel="stylesheet" href="https://unpkg.com/@picocss/pico@latest/css/pico.min.css" /> 

</head>

<body>

 

<py-script>

print('hello world')

</py-script>

</body>

</html>

 

 


링크 : https://nomadcoders.co/python-for-beginners?utm_campaign=pyscript&utm_source=youtube&utm_medium=cpc&utm_id=20220522

 

 

# Node.js환경에서 javascript로 python 스크립트를 실행하는 방법

=> node의 기본 내장 모듈인 "child-process" 를 사용하면 된다.

(python-shell 등의 외부 라이브러리를 사용할 수도 있긴 하다.)

 

이번 글에서는 아래의 사항을 순서대로 정리한다.

 

1. 기본 사용법

2. 자바스크립트로 "파이썬 파일 실행" 방법

3. 자바스크립트로 "파이썬 함수 실행" 방법

4. 자바스크립트로 "파이썬 함수에 인수 전달" 호출 방법

 

# 기본 사용법

1. 실행 : child-process 모듈의 spawn을 통해 파이썬 파일을 실행한다.

const result = require('child_process').spawn('python', [ '파이썬파일.py', '매개변수1', '매개변수2', ... ]);

 

2. 결과 : stdout의 이벤트리스터를 통해 실행 결과를 받는다.

result.stdout.on('data', function(data) {

      console.log(data.toString());

});

 

<기본 사용법 코드 전문>

// 1. child-process모듈의 spawn 취득
const spawn = require('child_process').spawn;

// 2. spawn을 통해 "python 파이썬파일.py" 명령어 실행
const result = spawn('python', ['파이썬파일.py']);


// 3. stdout의 'data'이벤트리스너로 실행결과를 받는다.
result.stdout.on('data', function(data) {
    console.log(data.toString());
});

// 4. 에러 발생 시, stderr의 'data'이벤트리스너로 실행결과를 받는다.
result.stderr.on('data', function(data) {
    console.log(data.toString());
});

 

const result = spawn('python', ['파이썬파일명.py', 매개변수1, 매개변수2, ... ]);

//이 코드는 "python 파이썬파일.py 매개변수1, 매개변수2" 명령어로 파이썬 코드를 실행는 것과 동일하게 작동한다. 

 

 

# python 코드 실행 방법

1. python 코드 

# print.py 파일

print('저는 카레유 입니다')

- "저는 카레유입니다"를 출력하는 파이썬 코드다.

 

 

2. javascript 코드에서 파이썬 코드 실행 및 결과 출력

// connectPython_print.js 파일

const spawn = require('child_process').spawn;

const result = spawn('python', ['print.py'));

result.stdout.on('data', function(data) {
    console.log(data.toString());
});

result.stderr.on('data', function(data) {
    console.log(data.toString());
});

1) child-process의 spawn을 통해 "python print.py" 명령어를 실행하여 파이썬 코드를 구동한다.

2) stdout의 'data' 이벤트 리스터를 통해 결과를 받아서 출력한다.

3) 위 코드에서 data를 toString()없이 사용하면, 버퍼가 출력되니 주의.

  - <Buffer 49 20 61 6d 20 70 79 74 68 6f 6e 0a>

 

 

# 파이썬  함수 실행 방법

1. 함수가 정의된 파이썬 코드 작성

# function_print.py 파일

def getValue():
    print ("value")

if __name__ == '__main__':
    getValue()

1) 파라미터가 없는 getValue함수를 선언하여 "value" 값을 출력하도록 했다.

 

2) if문을 통해 실행환경이 '__main__' 인 경우, getValue함수를 호출하도록 설정했다

  - "python 파이썬파일.py"으로 파이썬 파일을 직접 실행하면 내부 변수 __name__에 "__main__" 값이 할당된다.

  - spawn('pyton', ['파이썬파일명'.py])를 실행하면, 내부적으로  "python 파이썬파일.py"을 실행한다.

 

 

- 따라서 __name__ 값이 __main__이 되어, 위 코드는 getValue()함수를 실행하게 된다.

  - 참고) import 등을 통해 모듈로 불러와 사용할 땐, __name__ 에 __main__이 아니라, 모듈 명이 들어간다.

 

 

2. 자바스크립트에서 파이썬 함수 호출

const spawn = require('child_process').spawn;

const result_01 = spawn('python', ['function_print.py'], );

result_01.stdout.on('data', (result)=>{
    console.log(result.toString());
});

- 자바스크립트에서 파이썬 함수를 출력하는 것은 다를게 없다.

- 단, 파이썬 파일에 __name__ == '__main__' 인 경우, 함수를 호출하도록 설정되어 있어야 한다.

 

 

# 파이썬 함수 "인수 전달" 호출 방법

1. 인자를 받는 함수가 정의된 파이썬 코드

# function_args.py 파일

import sys

def getName(name, age):
    print (name + " : " + age)

if __name__ == '__main__':
    getName(sys.argv[1], sys.argv[2])

1) 매개변수를 받기위해 파이썬의 sys 모듈을 임포트했다.

2) name, age 인자를 받아, 출력하는 getName함수를 정의했다.

3) 실행환경 체크 조건문에서 함수를 호출하면서 sys.argv[1], sys.argv[2] 로 인수를 전달했다.

 

 

2. 자바스크립트에서 파이썬 함수를 호출하면서 매개변수 전달

const result_02 = spawn('python', ['function_args.py', '카레유', '20']);

result_02.stdout.on('data', (result)=>{
    console.log(result.toString());
});

// 출력 결과 => "카레유 : 20"

1) spawn을 통해 "python function_args.py"를 실행시키면서, "카레유", 20"을 파라미터로 전달 했다.

 


참고로 child-process 모듈에서는 spawn뿐만 아니라, exec을 통해서도 외부 명령어를 실행할 수 있다.

1. spawn은 별도 프로세스를 띄워서 명령어를 실행하고,

2. exce은 셸을 띄워서 명령어를 실행한다.

 

예를 들어 아래 코드는 현재 경로의 파일 목록을 출력한다.

const exec = require('child_process').exec;

const result = exec('ls');

result.stdout.on('data', function(ls_result){
    console.log(ls_result.toString());
})

유닉스, 리눅스 환경에서는 ls를 사용하고, 윈도우 환경에선 dir 을 사용하면 된다.

 

도움이 되시길.

 

 

p.s : 기본적으로 컴퓨터에 python이 설치되어 있어야 한다.

 

< 파이썬 연동 호출 시, Module Not Found Error 발생할 경우 참고 >

[Node.js] javascript로 python 연동 호출 오류: Module Not Found Error

 

 

 

 

로그인 후 댓글쓰기가 가능합니다.

?

List of Articles
번호 분류 제목 날짜 조회 수
56 파이썬 파이썬에서 인식이 잘되는 OCR 종류 2023.09.15 72241
55 파이썬 파이썬 랜덤으로 문제풀기 #2 2023.10.04 71774
54 파이썬 한우경매낙찰 유튜브 영상의 이미지에서 특정 문자 가져와서 저장하기 2023.09.14 71592
53 파이썬 파이썬 랜덤으로 시험문제 풀기 file 2023.10.04 67980
52 파이썬 파이썬 requestsbeautifulsoup 으로 웹 input에 입력값 대입한 뒤 결과값 파일로 저장하기 2023.11.13 59600
51 파이썬 python AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector' 해결방법 2023.05.07 47432
50 파이썬 DiffusionWrapper has 859.52 M params. 2023.04.21 37306
» 파이썬 자바스크립트 종말각?! HTML에서 파이썬 실행하는 PyScript 등장! 2022.06.08 31254
48 파이썬 파이썬 파이인스톨러 설치하기 2022.05.08 21421
47 파이썬 파이썬 구글스프레드시트 값 불러오기 html로 변환작업 중! 2022.05.08 20186
46 파이썬 Windows용 Tesseract 설치 및 사용법 2022.11.26 19448
45 파이썬 파이썬 화면 캡쳐하기 2022.11.26 19343
44 파이썬 파이썬으로 captCha 분석하여 웹사이트 소스 가져오기 2023.03.25 18959
43 파이썬 파이썬 글자 인식, 파이썬 OCR, 파이썬 Tesseract 사용 2022.11.21 14641
42 파이썬 파이썬에서 captCha 분석 프로그램을 만들 수 있을까? 2023.03.25 11714
41 파이썬 파이썬 easyocr 이미지 문자 인식 2023.01.16 10295
40 파이썬 파이썬 googleapiclient 모듈이 설치가 안될때 해결방법 1 2022.03.27 9824
39 파이썬 Visual Studio Code 파이썬 인터프리터 경로 변경하기 2022.03.09 9265
38 파이썬 파이썬을 이용하여 매크로 만들기 2023.01.13 9185
37 파이썬 웹 페이지에서 동적으로 생성되는 데이터 가져오는 방법 2023.03.15 6933
Board Pagination Prev 1 2 3 Next
/ 3

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소