## [C#] 비쥬얼스튜디오에서 파이썬(Python) 파일 실행 시키기
코딩정보/C#
2020-09-11 07:34:27
* * *
안녕하세요~
코딩연습생입니다 ㅎㅎ

이번 포스팅은 팁이라고 하기엔 좀 모호 할수 있는 내용입니다
머신러닝을 공부하면서 많이 접하게 되는 것이 바로 파이썬인데요
그중에서도 저는 파이토치(PyTorch)를 사용하여 딥러닝을 구현하고 있습니다
환경 구현을 C# + 파이썬 + MSSQL 이런 조합으로 구현을 하다가 C#에서 파이썬 py파일을 구동 시키는 법을
찾아 구현하게 되어 포스팅 합니다
첫번째로 경로 설정입니다
현재 PC의 설치된 파이썬 실행 파일을 환경변수에 잡아 주셔야 합니다
(Python.exe)
\- 시스템 환경 변수

* 해당 환경 변수는 PC마다 상이할수 있으니 참고만 해주세요

그다음 C#에서 구동하고자 하는 py 파일의 경로를 지정해야 합니다
저는 경로를 클래스로 생성하여 프로젝트 시작 위치에서의 절대 경로를 변수로 지정했습니다
*경로는 환경 설정에 따라 다르니 참고만 해주세요
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Data;
namespace PCL_Vision_Settings
{
class Settings
{
public string STARTUP_PATH;
public string PYTHON_ROOT_PATH;
public string PYTHON_PATH;
public string SERVER_PATH;
public string TRAINING_PATH;
public string OCR_PREPROCESSING_PATH;
public string OCR_TRAINING_PATH;
public Settings()
{
STARTUP_PATH = System.Windows.Forms.Application.StartupPath;
PYTHON_ROOT_PATH = STARTUP_PATH + "Python API폴더 경로";
PYTHON_PATH = "python.exe 파일 경로";
SERVER_PATH = PYTHON_ROOT_PATH + "API 서버 실행을 위한 스크립트 경로";
TRAINING_PATH = PYTHON_ROOT_PATH + "분류 훈련을 위한 스크립트 경로";
OCR_PREPROCESSING_PATH = PYTHON_ROOT_PATH + "OCR 전처리를 위한 스크립트 경로";
OCR_TRAINING_PATH = PYTHON_ROOT_PATH + "OCR 주석 작업 및 훈련을 위한 스크립트 경로";
}
위의 소스처럼 변수를 전역변수로 설정하여 클래스에서 절대경로를 설정해주었습니다

그다음 비쥬얼스튜디오(C#)의 메인 화면으로 돌아와서 버튼이나 py파일을 구동하고자 하는 위치에 다음과 같이
코딩을 합니다
string python_path = "\"" + 파이썬 경로 확인 + "\"";
string training_path = "\"" + 훈련 스크립트 파일 경로 확인 + "\"";
term_message = 훈련 관련 정보를 추강 입력 인자로 전달;
System.Diagnostics.Process.Start(python_path, term_message); // 훈련 실행
좀 어렵죠??

정리를 하자면 절대경로를 설정하여
**_[System.Diagnostics.Process.Start()](http://System.Diagnostics.Process.Start)_**
사용하여 py 파일을 python으로 실행시키는 겁니다
이러게 한뒤 실행을 하면

위의 그림처럼 python.exe가 실행되면서 설정해준 py파일을 불러와 자동 실행 시키게 됩니다
최대한 내용을 정리해서 포스팅을 했는데 이해가 잘 안되실수도 있습니다~
그럴때는 직접 한번 구현해보시면 쉽게 이해가 되실거라 생각됩니다^^

#python #microsoft visual studio #비쥬얼스튜디오 파이썬 실행
(*No embedded English lines found. Add translations later.*)