반응형 전체 글263 pyinstaller 빌드 한 번 해보자... 준비사항 ✅ 📦 1단계: 빌드 준비 체크리스트1️⃣ 불필요한 테스트/개발 코드 정리testcodes/, __pycache__/, 임시 로그파일 제거미사용된 legacy 함수 삭제 (이미 resolve_drive_path 정리처럼 진행하셨음 👍)2️⃣ 로컬 캐시 디렉토리 초기화cache/drive_audio/, cache/tts_audio/ 등 초기상태로 두거나 .gitignore 등록3️⃣ .env 또는 config.ini로 민감정보 분리 (필요시)구글 API 키, Telegram 토큰 등4️⃣ requirements.txt 최종 정리pip freeze > requirements.txt 그 외, 경로처리하는 부분이 아래처럼 되어있다면, 에러가 날 확률이 높다.os.path.dirname(__file__)imp.. 2025. 3. 24. PyInstaller 로 .exe 만들기 간단 요약 (윈도우 기준), 경로 설정 방법 ✅ PyInstaller 로 .exe 만들기 간단 요약 (윈도우 기준)1️⃣ venv 활성화radioEnv\Scripts\activate 2️⃣ PyInstaller 설치pip install pyinstaller 3️⃣ 빌드 실행pyinstaller main.py --onefile --noconsole--onefile → 하나의 .exe 파일--noconsole → 콘솔창 없이 실행 (원하면 제거 가능) 4️⃣ 생성된 .exe 위치dist/main.exe 5️⃣ .exe, config/, sounds/, modules/ 폴더만 함께 압축해 배포 예시)📁 Buffer_Radio_Package/├─ main.exe├─ modules/ ✅ 꼭 포함 (전체 코드)├─ config/│ .. 2025. 3. 23. anaconda + python 완전히 지우는 방법. 불가피하게 환경을 깨끗하게?!지우고 다시 셋업해야한다면.. 어떻게 파이썬(Anaconda)을 깨끗하게 제거하나요? 🧹 Step 1: Anaconda 완전 제거시작 > 제어판 > 프로그램 추가/제거Anaconda 를 찾아서 제거합니다.제거 후, 다음 경로도 수동 삭제:C:\Users\\Anaconda3\C:\Users\\.conda\C:\Users\\AppData\Local\Continuum\C:\Users\\AppData\Local\anaconda3\📌 위 경로는 직접 탐색해서 삭제해 주세요 (숨김 폴더 포함됨)🧼 Step 2: PATH 환경변수 확인시작 > 시스템 환경 변수 > 환경 변수시스템 PATH에 Anaconda 관련 경로가 남아있다면 모두 삭제:예: C:\Users\\Anaconda3,.. 2025. 3. 22. 없어져라! SSL 문제 해결을 위한 실전 대응 북 아...x치겠다..SSL 오류는 진짜 말없이 멈추고, 또 어디가 문제인지 분명하지 않아서 정말 스트레스 포인트.크아아아아아아아아아아아아아아아아아아아아아아아아 SSL 오류 종류들:csharp복사편집[SSL: WRONG_VERSION_NUMBER] [SSL: ENCRYPTED_LENGTH_TOO_LONG] [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] → 공통점: 인터넷은 연결되지만, 암호화 프로토콜(TLS/SSL)에서 handshake 실패 ✅ 2️⃣ 가장 많이 해결되는 방법 (순서대로 해보자) 중간에 어디서 해결될지 나도 몰라.🔸 (1) 환경변수 프록시 제거python복사편집import os os.environ.pop("HTTPS_PROXY", None) os.envi.. 2025. 3. 16. random.choice()와 random.shuffle()은 비슷해 보이지만 목적이 완전히 다르다 ✅ 핵심 차이 요약 함수 이름 / 설명 / 목적random.choice(list)리스트에서 단 하나의 항목 무작위 선택"하나만 고를 때"random.shuffle(list)리스트 항목 전체 순서를 랜덤 섞음 (in-place)"여러 개를 모두 무작위 순서로 쓰고 싶을 때"✅ 왜 random.shuffle()을 쓰는가?사용하려는 목적 예시.get_random_audio_from_drive_path() 안에서 mp3 파일 리스트를 가져온 후**"재생 가능한 파일을 먼저 찾고 그 중 하나를 고르려는 구조"** random.choice(files):python복사편집selected = random.choice(files) ➡ 파일 리스트가 순차일 경우, 항상 choice()가 처음 항목만 선택할 가능성 ↑(.. 2025. 3. 15. Preload + On-demand + Fallback 구조 (캐싱전략에 관하여, 용어설명) 메모 Preload + On-demand + Fallback 구조란? 이 세 가지는 캐시(다운로드) 전략을 단계적으로 설명하는 개념. 각각 하나하나씩만 사용해도 괜찮다. 필요시 중복으로 도입해서 조립하시라. 도입배경: 프로젝트마다 다르겠지만, mp3를 다운로드 받아 실행하는 프로그램을 만들고 있는데, mp3파일을 구글드라이브에서 다운로드 받는것이 매번 대기시간처럼 불편하게 느껴짐. 단, 캐싱구조 없이 즉지 다운로드 방식으로 먼저 전체 구조를 검토한 뒤에 캐싱전략을 도입할 단계가 되어서 고민하게 됨. 본인은 전체 구조를 완성 한 뒤에 세부구조나 확장을 하는 스타일이라서 그렇게 된 듯. 캐싱구조는 익숙하지가 않아서 보통 나는 위 세가지중 단일 전략만을 주로 사용해왔었는데, 이유는 내가 프로그램을 실행하고 .. 2025. 3. 12. python - API 연동할 때, 인증코드를 모듈마다 넣는 이유..가 있었다.. 무식해서 그런게 아니라규..ㅠ 그냥, 개발하다보면 전체적인 흐름을 우선시하다가 위와 같은 인증코드랄까, 라이브에서는 중복으로 넣으면 안될것 같은 코드들을 모듈마다 넣는 나 자신을 발견할 때가 있다. 누가 물어본다면 속 시원하게 멋지게.. 설명할 자신은 없었지만 일단 이게 괜찮은 것 같기도하고(나중에 리펙토링 하면 되니까, 난 알고있으니까 그대로 놔두면 안된다는 것을..!!) 여튼 걍 궁금해서 gpt에게 물어봤따... 그 녀석의 답은.. 시원했다. (일반적인 케이스에서의 관점) 위 코드가 중복으로 들어가는 이유1. 각 모듈이 독립적으로 사용할 수 있도록 하기 위해 보통 drive_service를 자체 선언합니다.예: drive_audio_loader.py 단독 테스트도 가능하게.간단한 스크립트 구조에서는 종종 코드 복사를 우선2. 작.. 2025. 3. 11. 구글드라이브에서 API로 파일 탐색을 할 때, 어떻게 하는게 더 효율적일까? feat ChatGPT 문제: 구글시트에서 구글드라이브의 경로가 적힌 문자열을 읽어서 구글드라이브의 폴더를 찾고, 하위폴더 포함하여 mp3파일을 모두 검색한 뒤 랜덤으로 하나를 선택해야하는 조건. 이 동작은 경로를 바꿔가면서 계속 수행해야함. 즉 단일성 이벤트가 아닌 것을 고려. 스프레드시트에 있는 경로: '공유문서함/share/music/ost' 두가지 탐색 방법이 GPT와 대화해본 결과 ..나왔다. [ Google Drive 경로 문자열 기반 탐색]첫번째는 경로의 가장 하위( 위 예제에서 ost)의 폴더 아이디를 찾아 그 아이디로부터 하위 폴더를 탐색함. (*폴더 아이디는 주소표시줄에 있긴한데, API로도 얻을 수 있더라) 동작:share 폴더 검색 → ID 획득해당 ID 기준으로 music 폴더 검색 → ID 획득.. 2025. 3. 11. 이전 1 2 3 4 5 ··· 33 다음 반응형