Skip to content
조회 수 31147 추천 수 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
번호 분류 제목 날짜 조회 수
837 파이썬 파이썬 매수할 피라미드 매수전략 2021.09.06 1833
836 파이썬 키움증권 OpenAPI 당황스러움 file 2021.09.06 1691
835 파이썬 파이썬 키움증권 OPEN API 매수/매도/정정/취소 주문방법 2021.09.05 3984
834 파이썬 파이썬 변수전달하기 2021.09.05 1375
833 컴퓨터잡담 파이썬 키움증권 open api 분할매매 수식구하기 2021.09.04 1276
832 컴퓨터잡담 파이썬(python) 자주 사용하는 명령 모으기 2021.09.03 788
831 컴퓨터잡담 [python] 윈도우 파이썬 모듈 설치 방법 (특정프로그램 설치 없이 기본프로그램 활용) 2021.09.02 1504
830 컴퓨터잡담 아나콘다에서 모듈을 설치할 때에는? 2021.09.02 906
829 컴퓨터잡담 파이썬 키움증권 open api 스크랩 2021.09.02 921
828 컴퓨터잡담 python 문자열에서 모든 공백을 제거 2021.08.31 880
827 컴퓨터잡담 Python Requests post() Method 2021.08.31 1270
826 컴퓨터잡담 파이썬 JSON으로 받아온 데이터의 Key 값 가져오기 2021.08.27 10695
825 컴퓨터잡담 파이썬으로 키움증권 open api 사용해보기 file 2021.08.24 1417
824 컴퓨터잡담 파이썬 다음 증권의 주가 가져오기 2021.08.22 1377
823 컴퓨터잡담 파이썬 네이버라인 메시지 보내기 2021.08.22 1426
822 컴퓨터잡담 파이썬 파일로 읽어올 때 \n이 \\n으로 변경되는 현상 대처방법 2021.08.15 1307
821 컴퓨터잡담 python pip 에러 line 193, line 197 해결방법 2021.08.12 3970
820 컴퓨터잡담 카카오 인증관련 오류 file 2021.08.08 7729
819 HTMLPHPMSQL CCS 메뉴 스타일 링크 2021.08.04 3871
818 컴퓨터잡담 파이썬 FTP 업로드/다운로드 하기 2021.07.31 3355
Board Pagination Prev 1 ... 3 4 5 6 7 ... 46 Next
/ 46

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소