python

[python] IntelliJ 파이썬 가상환경 설정, 실행환경 구축

hail2y 2025. 5. 30. 19:55
  • venv
  • conda

 

1. venv 사용 (Python 내장 모듈)

  • 로컬 베이스
  • 폴더

(1) 가상환경 설정: venv 폴더 생성

$ python -m venv .venv

 

이렇게 했더니 python 명령어를 인식하지 못 했다. 시스템 PATH에 파이썬 실행 파일이 등록되지 않아 인식하지 못 할 수 있다고 한다. 그래서 'python --version' 했을 때 잘 작동되었던 그 'python' 명령어로 접근하니 실행되었다.

성공!

 

(2) 가상환경 활성화

$ .venv/Scripts/activate (Windows) // source .venv/bin/activate (macOS/Linux)

 

그랬더니 이제는 보안 관련 권한 문제가 발생했다. 그래서 윈도우 기준 PowerShell을 관리자 권한으로 실행해 실행 정책을 변경해 주었다. 파이썬 터미널에서 접근했던 경로에 다음 명령어를 입력하고 'Y'로 허용해 주었더니 잘 되었다. 

Set-ExecutionPolicy RemoteSigned

 

"RemoteSigned 정책은 인터넷에서 다운로드한 스크립트는 서명되어야 실행할 수 있지만, 로컬에서 생성한 스크립트(즉, 직접 만든 가상 환경의 활성화 스크립트)는 실행할 수 있도록 허용합니다. 이 정책은 대부분의 개발 환경에서 충분히 안전하고 널리 사용됩니다." 

 

+ 가상 환경 진입 성공

사실상 2번의 명령어를 동일하게 입력하면 가상 환경이 실행되며 (.venv)이 뜬다. 

 

2. conda 사용 (Miniconda)

  • base라는 기본 환경 활성화
  • conda deactivate로 빠져 나올 수 있음

 - 기존의  yml(conda) 파일 읽어 가상환경 구축 cf. txt(venv)

 

environment.yml은 gitignore 같이 프로젝트 최상단 루트 위치에 저장한다. 나중에 충돌나면 추가된 라이브러리 내용만 반영하면 된다. 

 

(1) 환경 새로 생성

$ conda env create -f environment.yml

environment.yml 파일의 name: 필드에 지정된 이름으로 새로운 conda 환경을 생성하고 필요한 모든 패키지를 설치한다.

 

-f: --file 새로운 환경을 만들 건데 그 환경에 대한 정보를 파일에서 읽어온다

뒤에는 경로 명시

 

(2) 환경 업데이트(기존의 environment.yml을 수정했을 경우)

$ conda env update -f environment.yml --prune

environment.yml 파일의 내용에 맞춰 업데이트한다. 더 이상 명시되지 않은 패키지들을 기존 환경에서 삭제한다.

 

(3) 환경 활성화

$ conda init

 

$ conda activate org_chart_chatbot_env

 

conda init을 하고 activate를 해도 no change로 conda가 이미 필요한 설정을 다 해뒀다는 안내가 뜨는 경우는 이는 현재 사용 중인 셸(터미널)에 설정된 내용이 아직 로드되지 않았기 때문이다. 

 

$ source ~/miniconda3/etc/profile.d/conda.sh

 

source 명령어는 특정 스크립트 파일을 현재 셸 환경에서 직접 실행하도록 지시하는 명령어다. conda init을 하면 conda.sh와 같은 스크립트 파일이 conda 설치 경로에 생성되거나 업데이트되는데, 이 스크립트에 conda 환경을 활성화하는 데 필요한 PATH 설정 등을 포함하고 있다고 한다. 따라서 현재 열려 있는 터미널에서 바로 conda 설정을 적용하고 싶을 때 source 명령어를 사용해 해당 스크립트를 수동으로 로드하는 것이다.

 

+ 추가: source 명령어를 매번 실행하지 않고 activate만으로 해결하기

 

source 명령어를 수동으로 실행해야지 activate가 된다는 것은 conda 초기화 코드가 있지만 git bash가 시작될 때 그 코드를 읽지 못하고 있다는 것이다. 따라서 git bash가 시작될 때 읽을 코드(source)를 .bashrc 파일에 추가해 주면 된다. (참고로 이게 딱 유일한 방법이 아닌 게, conda가 설치될 때 시스템 환경변수에 등록되거나 자동으로 conda 초기화 스크립트를 찾아 실행하도록 설정될 때도 있다고 한다.) 내가 접근한 방법을 설명하자면 다음과 같다.

1. git bash 홈 디렉토리로 이동
$ cd ~

2. .bashrc 파일 있는지 확인
$ ls -a

없다면 파일 생성
$ touch ~/.bashrc

3. 내용 확인(nano 에디터 사용)
$ nano ~/.bashrc  

4. 파일에 source 명령어 추가
$ source ~/miniconda3/etc/profile.d/conda.sh


명령어를 추가했으면 ctrl + O(Write out) > ctrl + X(Exit)으로 나간다.
그리고 git bash 터미널 창을 완전히 닫았다가 새로 열어서 activate만으로 실행되는지 확인한다.
나는 이 과정으로 해결했다.

 

+ 패키지 추가 설치 시 channel 확인하기

$ conda search 패키지이름 

- https://anaconda.org에서 검색 

 

명령어 입력도 가능하지만 사이트에서 검색하는 게 더 편했다.

 

 

+ 설치된 패키지 목록 확인

$ conda list

더보기

YAML (YAML Ain't Markup Language)

  • 들여쓰기 통해 구조 정의
  • 키: 값
  • 리스트는 - 항목 형태로 표현

name: 생성될 Conda 환경 이름 지정

channels: 패키지를 다운로드할 Conda 채널 목록을 지정 (ex. conda-forge, defaults, pytorch)

dependencies: 프로젝트에 필요한 패키지 목록

 

가장 중요한 목적은 환경의 재현성 보장

 

+ 프로젝트 루트가 프로젝트 내 spring으로 잡혀서 같은 경로의 python 폴더 등이 안 보여요!

 

- 파일 탐색기를 열어 프로젝트에 python 폴더를 만들어 주었는데 프로젝트 루트 경로가 자꾸 spring으로 잡혀서 정말 이유를 알 수 없었다. close project로 recent projects에서 삭제 후 다시 프로젝트 루트로 다시 열어 주었을 때, 잠깐 python 폴더가 보였지만 다시 사라지고 spring으로 루트가 잡혔다. 근데 그때 알고보니 settings.gradle도 같이 들어 갔었는데 이게 문제가 될 줄은 몰랐다.

 

IntelliJ는 settings.gradle 파일을 발견하면 해당 파일이 있는 디렉토리를 Gradle 프로젝트의 루트로 강력하게 인식한다고 한다. 그래서 옮긴 후 다시 Gradle > build를 해 주었더니 보였다! 꼭 Gradle 재동기화를 해 주어야지 프로젝트 루트 경로가 제대로 잡혀서 보인다...settings.gradle의 쓰임새를 이제야 제대로 확인했다.

 

File > Project Structure > Modules 수정하는 데 1시간 걸렸다.

- settings.gradle에서 루트 프로젝트 이름을 중복 지정해 줘서 폴더 구조 수정하는 데도 애 먹었던 것으로 예상

- 이게 문제가 되면서 add starters도 실행이 안 됐다

- 프로젝트 이름 수정,  add starters 해 주면서 의존성 추가, 폴더 구조에서 python, spring > src > java를 소스 폴더로 지정

 

실행환경 구축

 

여기까지 다 완료하고서 바보같이 실행환경을 구축하지 않았다. 즉 세팅만 해 놓고 실행을 안 했다.  '파이썬 서버는 cursorAI에서 돌려야 하니까'란 생각으로 이전과 똑같이 독립적으로 실행하고서... 왜 여전히 IntelliJ 쪽 파이썬 코드가 돌아가지 생각했다. 궁극적으로는 IntelliJ만 활용해 스프링 서버와 파이썬 서버를 같이 돌려야한다. 

 

File > Project Structure > SDKs에서 파이썬 인터프리터를 추가한다. 나는 conda 환경으로 했기 때문에 활성화해 놓은 것을 추가해 주면 되는데 IDE에서 env를 자동으로 감지하지 못 해서 아래 명령어를 통해 경로를 확인한 다음 직접 지정해서 추가한다. 

 

위 경로에서 python.exe까지 선택해 주면 된다. (중간에 컴퓨터 환경이 바뀌어서 사진 상으로 경로 차이가 있다.)

 

Run > Edit Configurations에서 + 버튼으로 Python 서버를 추가한다. 파이썬 인터프리터는 만들어 둔 가상환경으로 설정하고 cursor에서처럼 명령어를 설정해 준다. 주의해야 할 점은 working directory 루트를 파이썬 코드가 담긴 루트 폴더로 잡아야 한다. 환경변수는 따로 설정해 주지 않았다. 

 

그러면 두 개의 서버를 IntelliJ에서 돌릴 수 있게 된다. 확실히 에디터를 번갈아 켜지 않아도 되니까 편하다.

 

그리고 파이썬 패키지를 만들게 된다면 __init__.py 파일이 자동으로 생성되는 모습을 볼 수 있는데, 패키지에 포함된 디렉토리에 __init__.py 파일이 없다면 패키지로 인식되지 않는다고 한다. python3.3 버전부터는 없어도 인식할 수 있게 됐다는데 하위 호환을 위해 생성하는 것이 안전하다고 한다. 어차피 자동으로 생성되는 김에 나는 사용해 보기로 한다. 파일에 추가로 뭘 입력하지 않아도 된다.

 

https://wikidocs.net/1418

 

05-3 패키지

파이썬에서 패키지(packages)란 관련 있는 모듈의 집합을 말한다. 패키지는 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해 준다. > 파이썬에서 모듈은 하나의…

wikidocs.net