본문 바로가기
Programming/Python

site-packages 폴더 우선 순위 문제 임시 해법 - 001

by The Programmer 2026. 6. 21.

 

1. Introduction

 

표준 Python IDLE IDE v3.12.10 for Windows x64에서 wxPython 최근 모듈을 설치하면서 생긴 문제에 대한 임시 해법입니다. wxPython 모듈을 설치하는 도중에 wx 패키지가 자꾸 엉뚱한 폴더에 설치되는 문제가 발생, 이 문제에 대한 임시 해법입니다.

 

Python IDE를 여러개 설치해서 사용하다보니 site-packages 폴더에 대한 우선권 문제가 생겨 특정 폴더를 제외하고 타겟 지정 폴더 위치에 우선권을 두는 코드입니다. 

 

제 필요만 채우는 용도로 만들었습니다만.. 관련 방법들이 이런 저런 이유로 다용도로 도움이 될 듯도 해서 일단 기록으로 남기기로 합니다.

 

 

2. Code

 

"""

Program Name : sitecustomize
Version : 1.0.2
Date : 2026. 06.21
Written by : James.
Copyright : All rights reserved.

Comments : 
......

......

"""


import sys, os, site

# 우선으로 만들고 싶은 site-packages 경로를 정확히 지정
# 적당히 수정해서 사용하면 될 듯.
TARGET = r"C:\Python_\Lib\site-packages"

def norm(p):
    return os.path.normcase(os.path.normpath(p))

target_norm = norm(TARGET)

# 경로가 실제로 존재하는지 확인
if os.path.exists(TARGET):
    # 기존에 있으면 제거한 뒤 맨 앞에 삽입
    try:
        sys.path = [p for p in sys.path if p and norm(p) != target_norm]
    except Exception:
        # 안전장치: 실패 시 기존 sys.path 유지
        pass
    sys.path.insert(0, TARGET)
    status = "OK"
else:
    status = "MISSING"

# =====================================================
# 위 : TARGET 우선화 코드.
# 아래 : 블록 추가, 사용자 site 경로를 제거하는 용도임.
# =====================================================

try:
    user_site = site.getusersitepackages()
except Exception:
    user_site = None

def _norm(p):
    return os.path.normcase(os.path.normpath(p)) if p else None

user_norm = _norm(user_site)
if user_norm:
    # sys.path에서 사용자 site 경로를 제거
    sys.path = [p for p in sys.path if _norm(p) != user_norm]
    # (선택) site 모듈의 사용자 site 캐시도 정리
    try:
        if hasattr(site, 'USER_SITE'):
            site.USER_SITE = None
    except Exception:
        pass


# =====================================================
# 이하 : 결과 확인용.
# =====================================================


# 시작 시 확인용 출력 (콘솔에 표시됨)
print("sitecustomize: target =", TARGET)
print("sitecustomize: status =", status)
print("sitecustomize: sys.path[0:8] =")
for i, p in enumerate(sys.path[:8]):
    print(f"  {i}: {p}")

print()
print("#"*70, "^.^;") # ^.^; Again, 확인용.
print()

# 확인용 출력 (원치 않으면 제거)
print("sitecustomize: removed user site:", user_site)
print("sitecustomize: sys.path[0:8] =")
for i, p in enumerate(sys.path[:8]):
    print(f"  {i}: {p}")


# 코드는 여기까지입니다. ^.^;

 

3. Result

표준 Python v3.12.10 IDLE IDE for Windows x64에서 실행한 결과입니다. Thonny IDE나 Spyder IDE가 아닙니다.

 

[ site-packages 폴더 인식 문제 임시 해법 - 1 ]

 

 

지정된 위치에 존재하는 site-packages 폴더를 제대로 우선적으로 인식하고 있으며 wxPython 모듈도 정상적인 위치에 잘 설치되었으며 불러오기도 정상 작동합니다. O.K.

 

4. Notes

 

wxPython 모듈 설치시 발생한 문제에 대한 임시 해법(보통 Python 관련 복수 IDE 사용시 발생할 수 있음).

 

제법 괜찮은 많은 교재들조차 sys, os, site 모듈들에 대해서 너무 무시하고 있다는 느낌이 듭니다.

 

표준 라이브러리에 대한 더그 헬먼님의 교재, "The Python 3 Standard Library by Example - 예제로 배우는 파이썬 표준 라이브러리"가 한국어판으로 나와 있어서 그나마 다행입니다. 하지만 초보자나 입문자가 보기에는 너무 분량이 많고 수준이 좀 전문적이지 않나 생각됩니다. 어쩌겠습니까. 목마른 이가 우물을 파야지.

 

https://aladin.kr/p/TNWvS

 

The Python 3 Standard Library by Example | 에이콘 프로그래밍 언어 시리즈 | 더그 헬먼

파이썬의 수많은 기능에 앞서 이 책은 언어 자체의 가장 기본인 표준 라이브러리에 중점을 두고 있다. 표준 라이브러리는 한 권의 책에 모두 담을 수 없을 만큼 방대하기 때문에 반드시 필요한

www.aladin.co.kr

 

 

초보자들이 볼 만한 다른 교재로는 박응용님의 라이브러리 전반에 대한 '얇은' 교재가 한 권 있기는 합니다. 제법 선별적이라 일부에서는 불만이 있을 수도 있습니다. 이점 참작해서 살펴보시면 의외로 도움이 될 만한 부분도 많을 것이라고 생각합니다.

 

Do it! 점프 투 파이썬 : 라이브러리 예제 편

 

Do it! 점프 투 파이썬 : 라이브러리 예제 편 | Do it! 시리즈 | 박응용

《Do it! 점프 투 파이썬》의 박응용 저자가 그동안 수많은 독자에게 받았던 ‘이제 무엇을 공부해야 할까요?’, ‘파이썬으로 무엇을 해볼 수 있을까요?’와 같은 질문에 대한 대답이다. 파이썬

www.aladin.co.kr

 

 

영어 원서로 시스템 관리자를 위한 라이브러리에 대한 교재는 몇 권 나와 있습니다. 아마존 검색해보시길.

 

 

■ 응용 연습 과제

1) 랜덤 ..

2) 좌우 .. 

 

 

5. Files

 

일단은 코드까지. ^.^;

sitecustomize_v1_0_2_.py
0.00MB

 

 

6. Ref.

 

1) 이건 .. 임기응변, 해법 자체는 한 권의 책 내용이 아니라 이것 저것 종합적.

2) 박상현. [ 뇌를 자극하는 Python 3 ] 2016. 한빛미디어. 

( wxPython에 대해서 간결하지만 잘 정리되어 있는 한 챕터 포함. 추천서. 양서. )

 

 

Happy Programming!

^.^;