외부 디펜던시들을 이용하는 경우가 꽤 있습니다. 예를 들어, python310이라던지 poetry 등을 이용할 때입니다. 이들을 이용할 때, 특정 키워드를 찾아야 하는 경우가 있는데요. 찾기 scope를 설정하는 방법을 알아보겠습니다. 그리고, 이것이 디렉토리 검색과 비교했을 때 차이가 있는지도 같이 알아보겠습니다.

 


 먼저, 편집 - 찾기 - 파일에서 찾기를 클릭하시면 이런 창이 뜨게 됩니다. 범위(S)를 누르면 모든 위치 옆에 ...이 있습니다. 이 ...을 클릭해 보겠습니다.

 

 여기서 + 버튼을 눌러보겠습니다. 그러면 로컬, 공유됨을 선택할 수 있습니다. 로컬을 클릭하겠습니다.

 

 

 새 범위 추가가 있습니다. 이름을 poetry로 하겠습니다.

 

 

 이제, 프로젝트 폴더와 External Dependencies가 나옵니다. External Dependencies가 설정되어 있는데, 창에 표시되지 않는다면, 캐시를 invalidate 하시고 다시 시도해 보세요. 이 중에, 포함, 재귀적으로 포함, 제외, 재귀적으로 제외가 있습니다.

 

 

 External Dependencies를 선택하시고, 재귀적으로 포함을 누르겠습니다.

 

 

 그러면 패턴이 ext:*/로 업데이트 됨을 볼 수 있습니다. 그리고 확인 버튼을 누르시면, External Dependencies에서 찾거나 바꾸기를 할 수 있는 scopes가 생성됨을 볼 수 있습니다. 결국 scopes를 설정한다는 것은 대상이 되는 범위를 설정하는 것과 동치라고 생각하면 편하겠습니다.

 

 


 현재 제 프로젝트의 poetry root는 pypoetry의 cache의 virtualenvs 밑에 clothes-matching-XXXX-py3.10입니다. 이 폴더에서 재귀적으로 찾는다면 clothes-matching-XXXX에 설치된 패키지들에 대해서 검색을 하게 됩니다. 예를 들어, django가 설치되었다면, SECRET_KEY를 어디서 쓰는지 정도는 검색할 수 있을 겁니다.

 

 

 범위에서 ascii_uppercase를 검색해 보겠습니다. string은 import string을 하면 바로 되는데요. ascii_uppercase를 검색해 보니, string.py가 있음을 알 수 있습니다.

 

 이 파일의 위치를 보면 AppData의 Local의 Programs의 Python의 Python310의 Lib 밑에 있습니다. 이를 토대로 알 수 있는 점은, 외부 디펜던시를 scopes로 추가하면, poetry 뿐만이 아니라 다른 디펜던시 (default python3.10과 같은 것)에서도 찾는다는 것을 알 수 있어요.

 

 

 반면에 디렉토리를 보면, strings.py의 결과가 없습니다. 이는, ascii_uppercase라는 내용이 있는 strings.py가 poetry의 가상환경 디렉토리 밑에 없기 때문입니다.

 

 

 이제 프로젝트 + External Dependencies에서 특정 키워드를 찾게 해 봅시다. poetry의 scopes를 바꾸면 됩니다. .idea는 재귀적으로 제외합시디ㅏ. 그러면, clothes-matching-server는 재귀적으로 추가하고, 해당 디렉토리 밑에 있는 .idea는 재귀적으로 제외하면 되겠네요.

 

 

 이제, SECRET_KEY를 poetry에서 찾아봅시다. 그러면, config의 settings.py 밑에도 있고, 외부 디펜던시의 crypto.py, signing.py에도 있음을 알 수 있습니다. scopes를 설정하면, 외부 디펜던시에서도 특정 키워드를 편리하고 빠르게 찾을 수 있습니다.