-
인터프리터와 컴파일러 그리고 IDE대학 수업/Fast API 2024. 9. 2. 14:05
조때숴
이미지를 보니, uvicorn 명령을 실행하려고 했지만, Python 인터프리터 내에서 실행하여 SyntaxError가 발생한 것 같습니다. uvicorn은 Python 코드가 아닌 명령줄(Command Line)에서 실행해야 하는 명령어입니다.
문제 해결 방안
- 올바른 실행 환경으로 이동: 현재 Python 셸 또는 터미널에서 >>>로 표시되는 인터프리터 내에 있습니다. 먼저, Python 인터프리터를 종료해야 합니다. 터미널에 exit()를 입력하고 Enter를 누르세요:
-
pythonexit()
- 명령어를 터미널에서 실행: Python 인터프리터를 종료한 후, 터미널에서 아래 명령어를 입력하여 uvicorn 서버를 실행하세요:
이 명령은 .py 파일로 저장된 Python 스크립트(main.py)를 실행하는 명령어입니다. 이 명령어는 Jupyter Notebook의 .ipynb 파일에서는 실행되지 않습니다. -
bash코드 복사uvicorn main:app --reload
여기서 문제
파이썬을 사용하는 환경이란 무엇인가?
문제 해결 단계
- Python 인터프리터에서 코드 실행: Python 코드를 실행하려면, Python 인터프리터나 IDE (예: VS Code, PyCharm)에서 실행해야 합니다.
- Python 인터프리터 사용: PowerShell에서 python 명령어로 Python 인터프리터를 실행한 후, Python 코드를 입력할 수 있습니다.
인터프리터, IDE ?
컴파일러, 인터프리터, IDE(통합 개발 환경)
컴파일러 : 하나의 컴퓨터 프로그램이다, 하나의 프로그래밍 언어(Source)로 쓰여진 것을 다른 언어(target)로 번역하는
영어로 쓰인 명령어들을 모아놓은 텍스트 파일 : 소스코드, 원시코드
(In python, 'print("hellow world");)
=> Instruction set(명령어 세트) 에 따라 입력되면, CPU를 작동 시킬 수 있다.
프로그램 언어(Source) to 기계어(Target)
컴파일러가 소스코드를 기계어로 번역하는 과정 : 컴파일
사용자가 프로그램을 작성하고 컴파일러 프로그램을 실행시키면 CPU가 해석할 수 있는 기계어 생성 : 오브젝트 코드
이후 실행하기 위한 '링크'라는 과정
소스코드에는 시동(execute)코드가 없다. 그리고 컴파일 된 소스코드(=; 오브젝트 코드) C언어의 라이브러리 같이 다른 코드를 호출하기 때문에, 오브젝트 코드는 링커를 통해서 실행코드로 완전하게 번역된다.
=> 실행되는 exe파일은 링크과정을 완료한 실행파일
==> 프로그램을 실제로 실행하기 전 만들기에 : Complie time(컴파일 시간) 이라고 한다. 소스코드에 문제가 있다면, 오류를 검출하여 다시 컴파일 하도록 하도록 한다. 컴파일 과정에서 발생하는 에러는 컴파일 에러라고 한다
//
==> Runtime error : 배포 후 사용자가 프로그램을 실행시키는 도중에 발생
프로그램 설계 단계에서 대비한다. 크기가 정해진 스택 메모리에 정적 타입(Static Type) 데이터를 올려서 사용한다.
컴파일 시간에 미리 검사를 다 하기 때문에 런타임의 타입 불일치 등의 문제 예방 가능
= = = 실행시간(Runtime)에 어떤 데이터를 사용할 지 이미 다 정해져 있기 때문에 컴파일 잘하면 오류율 낮음.
인터프리터 언어의 기준 : 파이썬!
컴파일러 : 외국어 문서 통번역
인터프리터 : 실시간 통역
=> 통역은 실시간으로 이루어져야 한다. 한 문장 단위로 실행을 시킨다. 인터프리터 상에서 짧은 문장들로 작성하는 소스코드를 스크립트라고 한다.
스크립트 언어 길게쓰기 는 소스코드를 컴파일 하는 것과 유사할 수도 있다.
파이썬의 쉘(Shell) 환경 처럼 '프롬프트' 가 사용자의 입력을 기다리고 있는 환경에서 사용하면 '스크립트'라 부른다.
1) 인터프리터는 소스 코드를 한꺼번에 컴파일 하지 않는다. 한줄씩 읽어서 실행시간(Runtime)에 실행시킨다.
이는 실행시간이 느려지게 만든다 : 소스 코드는 UTF-8 로 인코딩 된 텍스트 파일일 뿐이다.
<> 컴파일러는 이미 번역해놓고 돌리지만, 인터프리터는 번역과 실행을 동시에 진행해야 한다.
2) 컴파일 언어는 미리 번역해놓은 것을 1메가 정도의 스택 메모리에서 정적 타입(static type)의 데이터를 정리해놓고 빠르게 실행 할 수 있는데,
인터프리터는 힙메모리에 동적 타입을 사용하기 때문에 데이터 접근 효율이 떨어진다. 같은 시간을 하더라도 오래걸리고 작업공간을 많이 할애한다.
=> 현대 인터프리터 언어 : 동적 타입 지원 : 파이썬 메모리 차지 주요 원인 중 하나 : 컴파일러는 엄격
https://digiconfactory.tistory.com/391
IDE - integrated development enviorment
코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경 제공 소프트웨어
2015년 3월 기준으로 가장 대중적인 IDE로는 이클립스(웹 , Java SE , Java EE , C++/C)와 비쥬얼 스튜디오(C++ , C# , VB .NET , F# , Python) IntelliJ(C/C++ , C# , Java 등등 대부분)가 있다.[2]
다양한 프로그래밍 언어를 지원하는 통합 개발 환경의 예로, 비주얼 스튜디오, 이클립스를 들 수 있다. 이클립스는 자바를 기본적으로 지원하지만, 파이썬, 펄, 루비, 포트란, C, C++, PHP, 코볼, JSP 등과 같은 언어들도 추가적으로 설치할 수 있다. 각 언어의 추가 설치본은 각자 고유의 디버거를 비롯한 다양한 도구들을 가지고 있다.
(출처 : 위키피디아 : 통합 개발 환경)
또한 클라우드 환경에 맞춘 클라우드 IDE가 개발되었으며, 이로 인해 개발자의 협업이 가능해졌다. 여러 개발자가 동시에 코드를 작성하거나 리뷰를 하고 공유하는 것이 가능하며, 운영체제와 웹브라우저의 종류에 관계 없이 사용 가능하다. 대표적으로 Cloud9, JSFiddle, Icenium, Codenvy 등이 있다.
[네이버 지식백과] IDE [Integrated Development Environment] (두산백과 두피디아, 두산백과)
- 올바른 실행 환경으로 이동: 현재 Python 셸 또는 터미널에서 >>>로 표시되는 인터프리터 내에 있습니다. 먼저, Python 인터프리터를 종료해야 합니다. 터미널에 exit()를 입력하고 Enter를 누르세요: