Skip to content
조회 수 31477 추천 수 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
번호 분류 제목 날짜 조회 수
877 컴퓨터잡담 APMSetup에서 문서 출력 순서 등 설정 2010.07.07 14066
876 컴퓨터잡담 ARP(mac spoofing) 바이러스 내용 스크랩 3 file 2012.10.19 6440
875 컴퓨터잡담 arp란? arp 해킹방법 및 차단방법(MAC 다발변조로 인한 인터넷 차단방지) 4 2011.12.26 6681
874 Server asp,jsp,php 아이피(ip) 가져오기/확인 file 2013.01.05 11879
873 컴퓨터잡담 Ateros(아테로스) AR9485WB-EG 무선 네트워크 어댑터 드라이버 업데이트 및 다운로드 4 file 2012.11.25 15786
872 AutoHotKey Autohotkey + mypeople(마이피플) 메시지 전송 1 2013.03.12 15449
871 컴퓨터잡담 autohotkey - 변수리스트(Variables and Expressions) 모음 2011.09.30 11834
870 AutoHotKey AutoHotkey COM Standard Library 2 2011.02.10 18050
869 AutoHotKey autohotkey command-line 실행시 파라미터 설정 2018.02.14 7264
868 컴퓨터잡담 Autohotkey DllCall() 호출하기 5 2010.12.19 23471
867 컴퓨터잡담 AutohotKey Postmessage(SendMessage)로 CTRL+C 전송하기 2010.07.11 21429
866 WindowsTip autohotkey regwrite ipv6 제거툴 file 2014.12.27 1547
865 컴퓨터잡담 autohotkey 변수의 이해 2010.10.02 20658
864 AutoHotKey Autohotkey 브라우저 제어 테스트 file 2015.01.26 8217
863 컴퓨터잡담 Autohotkey 파일 저장시 한글 깨짐 현상 2010.10.11 11206
862 AutoHotKey autohotkey) 30분마다 자동으로 디스크 정리하기 file 2013.07.31 33081
861 AutoHotKey Autohotkey) EditPlus에 구문 색깔 입히기 3 file 2012.08.23 10820
860 AutoHotKey Autohotkey) Find WM_COMMAND parameter with Winspector 17 2012.02.22 35874
859 AutoHotKey autohotkey) IPv6 모두 사용안함 설정하기 1 file 2011.12.30 19135
858 AutoHotKey autohotkey) Mutex에 대해서 1 4 2011.12.31 24128
Board Pagination Prev 1 2 3 4 5 ... 46 Next
/ 46

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소