Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[python] Visual studio code에서 다운받은 패키지 사용하기(경로 설정 등) 본문

프로그래밍 Programming/파이썬 Python

[python] Visual studio code에서 다운받은 패키지 사용하기(경로 설정 등)

보통의공대생 2024. 4. 16. 21:55

 

맨날 까먹어서 쓰는 글

 

다른 사람이 배포해놓은 라이브러리를 다운받아서 사용하면 그 안에 많은 모듈이 있다.

 

 

0. 라이브러리 vs 모듈 vs 패키지

 

 

내가 사용하기 위해 만든 다양한 함수,변수,클래스 등을 묶어서 .py로 만들면 모듈이라고 하고

이들을 묶어서 __init__.py와 함께 만들어서 폴더에 넣으면 패키지 (init.py이 없으면 패키지로 인식이 안되는 문제가 있다.)

패키지와 모듈들을 묶어서 하나로 만들면 라이브러리라고 한다.

 

 

numpy나 pandas 같은 것들이 파이썬 패키지이고 그 안에 다양한 모듈들이 있다.

이를 모아서 더 큰 라이브러리를 만들 수 있다. 예를 들면 Matplotlib, PyTorch 등.

이것보다 더 큰 개념을 framework라고 하는데 이는 보통 개발자들이 사용하는 툴이라고 한다.

 

 

1. 파일 경로 확인

 

import sys

print(sys.path) # 탐색할 경로들
print(sys.modules) # system이 보유한 모듈들


import os
print(os.getcwd()) # 현재 경로
print(os.path.dirname(os.getcwd())) # 현재 경로를 기준으로 상위 경로

 

 

2. 경로 추가

2-1. 일시적 방법

경로는 코드로 다음과 같이 추가 가능하다.

import os,sys
sys.path.append(os.path.dirname(os.getcwd()))

 

또는 PYTHONPATH 환경 변수에 내가 원하는 경로를 추가하는 방법도 있다.

 

import os
os.environ["PYTHONPATH"] = "경로"

 

vscode를 사용한다면, vscode에 있는 기능으로 폴더 추가도 가능하다. 빨간 밑줄친 곳을 눌러서 경로추가하면 .vscode 안에 settings.json 파일이 추가된다.

 

# .vscode/settings.json 파일 안에
{
    "python.analysis.extraPaths": [
        "./jax"
    ]
}

 

 

 

3. 경로 상의 문제

 

나는 보통 가상환경을 만들고 그 안에서 코드를 사용하는데 원하는 모듈을 가져올 때 문제가 발생했다.

 

from jax.config import config


라고 할 때 가상환경 상의 jax 먼저 살펴보기 때문에 내가 가져온 라이브러리 내부의 jax 폴더를 살펴보지 않는다.

 

sys.modules (현재 환경 상의 모듈과 패키지) > built-in modules (파이썬 내장 모듈) -> sys.path (현재 디렉토리, PYTHONPATH 환경 변수 경로, 직접 추가한 경로)

순서로 살펴보기 때문에 위처럼 경로를 추가해도 내가 가상환경에 설치한 패키지와 내가 작업하는 폴더 상의 패키지 중  가상환경을 먼저 선택하게 되어있다.

 

이 순서를 바꿔보고 싶었으나 방법을 찾을 수 없어서 중복되는 가상환경 패키지는 삭제하는 것을 택했다.

 


참고자료

 

https://velog.io/@hwang-eunji/python-import%EC%9D%98-%EA%B2%80%EC%83%89-%EC%88%9C%EC%84%9C

 

python import의 검색 순서

Python module 이해하기Python pacakage 이해하기에서 살펴본 import 에 대해 더 알아보자. import를 통해 모듈과 패키지를 불러오면 어디서 어떻게 가져오는 걸까? 아래 목록을 보자.sys.modulesbuilt-in modulessys.

velog.io

https://learnpython.com/blog/python-modules-packages-libraries-frameworks/

 

Python Modules, Packages, Libraries, and Frameworks

Let’s discuss the difference between Python modules, packages, libraries, and frameworks – in simple terms and with multiple examples.

learnpython.com

 

Comments