[vscode] pylance extenstion 사용할 때 발생하는 import [user library] could not resolve 해결하기

2021. 2. 12. 12:11꿀팁 분석 환경 설정

728x90

 

"완벽한 해결책은 아니라는 것을 먼저 말씀드립니다."

 

파이랜스(Pylance)는 마이크로소프트의 기존 파이썬(Python) 확장 기능과 연동돼 파이썬 개발자에게 더 빠른 타입 검사 및 프로그램 분석을 제공한다.

pylance를 사용하면 개발자가 좀 더 빠르게 개발할 수가 있고, 여기에 Error Lens라는 extensions까지 같이 사용하면 더 좋다! 

예를 들어 이런 식으로 vscode에서 error를 아주 잘 보여줘서 디버깅하기가 쉬워진다.

 

근데 여기서 발생한 문제가 있다. 

pylance를 사용했을 때 사용자가 따로 개발한 script는 잘 적용이 안되는 이슈가 있었다.

 

나 같은 경우에는

 

src 

--> data

---------> test

train

--> train

---------> train.py

 

이런 식으로 directory가 되어있다보니, sys.path.append를 활용해서 하는데, 실제 돌아가는 데는 문제는 없지만, 사용자 디렉터리 부분이 import [package] could not resolved 라는 현상이 발생하게 된다 ㅠㅠ

 

폴더 경로가 일치하면 큰 문제는 없어 보이는데, 저런 식으로 경로 안에 또 경로를 파고드는 경우가 생기면 문제가 발생할 것 같다.

 

그래서 발견한 것은 새로 만든 폴더랑 script를 site-packages에 넣는 것이 었다.

그래서 순서는 다음과 같다!

 


현재 상황

 

local : windows

remote : ubuntu 16.04

container : ubuntu 16.04

 

conda 사용


 

1. 현재 내가 사용하는 site-packages 경로 찾기

python -c 'import site; print(site.getsitepackages())'

# ['/opt/conda/envs/test/lib/python3.7/site-packages']

그러면 내가 사용하는 환경에서의 site-packages 경로를 찾을 수 있다.

2. site-packages 내에서 임의의 폴더 만들기 및 폴더 복사

그러면 다음에는 site-packages 내에서 폴더를 만든 다음에 복사를 하는 것이다.

mkdir /opt/conda/envs/wash/lib/python3.7/site-packages/srlee
cp -rf ./src /opt/conda/envs/wash/lib/python3.7/site-packages/srlee

이런 식으로 하면 srlee라는 폴더에서 내가 만든 폴더들이 다 복사가 된다.

 

그리고 개발을 하면 된다!

위와 같이 위에 있는 것은 다음과 같은 에러가 뜨지만, 아래에 복사하고 나면 정상 작동하는 것을 알 수 있다.

물론 개발을 다 완료하고 나서, 복사해줘야 하는 단점이 있지만, 장점이 더 많을 것 같다고 생각한다!

 

더 좋은 방법(21/07/19) 

cp보다 symbolic link를 사용하면 더 유용한다. 

symbolic link은 바로 가기 같은 역할을 하는 것으로, 원본 파일을 수정하면 바로바로 반영이 된다. 

그래서 cp보다는 symbolic link로 해서 개발을 하는 것이 더 좋을 것 같다.

원본을 수정해도 바로가기에 만든 것이 수정되고, 바로가기에서 수정해도 원본이 수정되기 때문에 우리가 원하는 형태는 이런 형태일 것 같다.

ln -s ./srlee /opt/conda/envs/wash/lib/python3.7/site-packages

symbolic link는 아래 글을 참고하시면 간단한 개념 정도는 이해하실 수 있을 것이다.

참고 (https://data-newbie.tistory.com/763)

더 좋은 방법(21/07/27) 

더 좋은 방법이라기보다, 패키지처럼 관리할 수 있는 방법도 공유하다.

setup.py를 이용해서 자기만의 프로젝트를 하나 만드는 방법이 있다.

2021.07.27 - [꿀팁 분석 환경 설정/파이썬 개발 팁] - Python) 파이썬 프로젝트를 패키지화하기(setup.py)

위에서 setup.py 사용 방법에 대해서 작성한 글이다.

해당 글을 참고하시면 자신의 코드를 패키지처럼 만들어서 관리할 수 있다.(다들 이미 아실 수도 있지만 공유)

 

 

다들 즐거운 코딩하시길!

 

 

기본적인 해결 방식은 아래와 같음 pythonpath가 잘 안 맞아서 안되는 경우가 많으니,
vscode에서 python path를 잘 적용해주면 됨.

www.programmersought.com/article/23564560768/

728x90