묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모두를 위한 파이썬 : 필수 문법 배우기 Feat. 오픈소스 패키지 배포 (Inflearn Original)
가상환경 설정 시 vscode 실행 오류
code 입력 시 visual studio code가 실행되지 않습니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
세션 4까지 들었는데, 여기서 DRF로 넘어가도 될까요?
제가 API Server 구축에 더 관심이 가서... 세션 4까지 복습했는데, 바로 DRF로 넘어가도 될까요?
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
누름틀의 메모를 조회하는 방법이 궁금합니다.
질문 남겨주셔서 감사합니다.막히면 언제든 무엇이든 자주 질문 던져주세요.수학/과학이나 알고리즘과는 달리업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.다시 말씀드리지만, 질문을 자주자주 남겨주세요.저도 최대한 빠르게 회신 드리겠습니다.당부드릴 두 가지가 있습니다.① 가급적 구체적으로 설명해주세요.② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ==================================== 안녕하세요~ 막히는 부분이 있을 때마다 항상 많은 도움을 받고 있습니다.예전에 누름틀의 메모를 가져오는 방법에 문의하고 잘 활용하고 있는데누름틀의 개수가 많아지면 생각보다 조회하는 시간이 오래 걸려서 다시 질문을 합니다.누름틀 필드로 커서를 이동한 후 내용을 추출하는 방법 말고 다른 방법이 없을까요?? 누름틀의 필드이름을 알면 누름틀 안의 안내문, 메모 내용을 추출하는 방법이 궁금합니다.
-
미해결직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
독립형 프로그램으로 추출 후 오류 발생
질문 남겨주셔서 감사합니다.막히면 언제든 무엇이든 자주 질문 던져주세요.수학/과학이나 알고리즘과는 달리업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.다시 말씀드리지만, 질문을 자주자주 남겨주세요.저도 최대한 빠르게 회신 드리겠습니다.당부드릴 두 가지가 있습니다.① 가급적 구체적으로 설명해주세요.② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ==================================== 안녕하세요, 오랜만입니다.저번에도 한번 여쭤본 적이 있는데, 해결 못하고 방치해두고 있다가 다시 시간이 나서 재도전중인 문제입니다. 제가 만든 코드는 pyhwpx를 이용해 페이지를 자동으로 매기는 프로그램입니다.코드 자체는 정상적으로 작동하는 것을 확인했습니다.문제는 제가 이걸 회사 사람들과 공유해서 쓰기 위해 별도의 독립형 프로그램으로 추출할 때 생깁니다.제 목표는 컴퓨터에 파이썬도, pyhwpx도 설치되어 있지 않은 그런 사람들의 컴퓨터에서 실행을 해도 정상 작동하는 것인데요. 그런데 그런 사람의 컴퓨터에서 실행을 하면 아래와 같은 오류가 뜨고오류를 구체적으로 확인해보려 해도 파이썬이 없는 컴퓨터라 확인할 수가 없네요.chatGPT한테 물어보니 다른 사람 컴퓨터에서 pyhwpx가 한글 파일을 찾지 못하는 문제라고 하는데제가 Hwp.exe의 경로를 찾아서 넣어주기까지 했는데도 같은 오류가 발생하네요.뭐가 문제인지 알 수 있을까요?꼭 좀 부탁드립니다 ㅠㅠ. 제가 작성한 코드는 다음과 같습니다.import tkinter as tk from tkinter import filedialog, messagebox from pyhwpx import Hwp import os # 한글 경로 탐색 함수 def find_hwp_path(): # 명시적인 경로 설정 possible_paths = [ r"C:\\Program Files (x86)\\Hnc\\Office 2022\\HOffice120\\Bin\\Hwp.exe", # Office 2022 기본 경로 r"C:\\Program Files\\Hnc\\Office 2020\\Hwp.exe", # Office 2020 r"C:\\Program Files (x86)\\Hancom\\Office 2018\\Hwp.exe", # Office 2018 r"C:\\Program Files (x86)\\HWP\\Bin\\Hwp.exe" # 과거 한글 ] # 경로 확인 for path in possible_paths: if os.path.exists(path): return path # 경로를 찾지 못하면 None 반환 return None # 한글 연동 함수 def set_page_numbers(file_paths, odd_files): try: hwp_path = find_hwp_path() if not hwp_path: messagebox.showerror("오류", "한글 경로를 찾을 수 없습니다.") return # 한글 프로그램 객체 생성 hwp = Hwp(hwp_path) hwp.XHwpWindows.Item(0).Visible = False # 한글 창 숨기기 j = 1 # 페이지 번호 초기값 for file_path in file_paths: hwp.Open(file_path) # 첫 페이지 이동 hwp.HAction.Run("MoveTopLevelBegin") # 홀수 페이지로 시작하지 않는 파일 처리 if file_path in odd_files: hwp.PageNumPos(j) else: if j % 2 == 0: # 기본적으로 홀수 페이지 시작 j += 1 hwp.PageNumPos(j) # 페이지 수 증가 (현재 문서 페이지 수만큼 더함) j += hwp.PageCount hwp.Clear(2) hwp.XHwpWindows.Item(0).Visible = True # 작업 후 한글 창 보이기 hwp.Clear(3) hwp.Quit() messagebox.showinfo("완료", "페이지 번호 작업이 완료되었습니다!") except Exception as e: import traceback error_message = traceback.format_exc() messagebox.showerror("오류", f"작업 중 오류가 발생했습니다:\n{error_message}") # 파일 이동 함수 def move_up(listbox): selected_items = listbox.curselection() if not selected_items: return for index in selected_items: if index > 0: # 첫 번째 항목이 아닌 경우에만 이동 가능 value = listbox.get(index) listbox.delete(index) listbox.insert(index - 1, value) listbox.selection_set(index - 1) def move_down(listbox): selected_items = listbox.curselection() if not selected_items: return for index in reversed(selected_items): if index < listbox.size() - 1: # 마지막 항목이 아닌 경우에만 이동 가능 value = listbox.get(index) listbox.delete(index) listbox.insert(index + 1, value) listbox.selection_set(index + 1) # 파일 추가 및 제거 함수 def add_file_to_list(listbox): files = filedialog.askopenfilenames( title="파일을 선택하세요", filetypes=[("HWP/HWPX 파일", "*.hwp;*.hwpx"), ("HWP 파일", "*.hwp"), ("HWPX 파일", "*.hwpx"), ("모든 파일", "*.*")] ) for file in files: listbox.insert(tk.END, file) def remove_selected_file(listbox): selected_items = listbox.curselection() for item in reversed(selected_items): listbox.delete(item) # 실행 함수 def execute_task(): all_files = list(listbox_all_files.get(0, tk.END)) odd_files = list(listbox_odd_files.get(0, tk.END)) if not all_files: messagebox.showerror("오류", "전체 파일 목록이 비어 있습니다.") return set_page_numbers(all_files, odd_files) # GUI 설정 root = tk.Tk() root.title("페이지 번호 매기기 프로그램") root.geometry("800x650") root.resizable(False, False) # 전체 파일 프레임 frame_all_files = tk.Frame(root, relief="solid", bd=1) frame_all_files.place(x=10, y=10, width=600, height=250) label_all_files = tk.Label(frame_all_files, text="전체 파일", font=("맑은 고딕", 12, "bold")) label_all_files.pack(anchor="nw", padx=5, pady=5) listbox_all_files = tk.Listbox(frame_all_files, selectmode="extended") listbox_all_files.pack(fill="both", expand=True, padx=5, pady=5) btn_frame_all_files = tk.Frame(root) btn_frame_all_files.place(x=620, y=10, width=160, height=250) btn_add_file = tk.Button(btn_frame_all_files, text="파일 추가", command=lambda: add_file_to_list(listbox_all_files)) btn_add_file.pack(fill="x", padx=5, pady=5) btn_remove_file = tk.Button(btn_frame_all_files, text="선택파일 삭제", command=lambda: remove_selected_file(listbox_all_files)) btn_remove_file.pack(fill="x", padx=5, pady=5) btn_move_up = tk.Button(btn_frame_all_files, text="위로 이동", command=lambda: move_up(listbox_all_files)) btn_move_up.pack(fill="x", padx=5, pady=5) btn_move_down = tk.Button(btn_frame_all_files, text="아래로 이동", command=lambda: move_down(listbox_all_files)) btn_move_down.pack(fill="x", padx=5, pady=5) # 홀수 페이지로 시작하지 않는 파일 프레임 frame_odd_files = tk.Frame(root, relief="solid", bd=1) frame_odd_files.place(x=10, y=280, width=600, height=250) label_odd_files = tk.Label(frame_odd_files, text="홀수 페이지로 시작하지 않는 파일", font=("맑은 고딕", 12, "bold")) label_odd_files.pack(anchor="nw", padx=5, pady=5) listbox_odd_files = tk.Listbox(frame_odd_files, selectmode="extended") listbox_odd_files.pack(fill="both", expand=True, padx=5, pady=5) btn_frame_odd_files = tk.Frame(root) btn_frame_odd_files.place(x=620, y=280, width=160, height=250) btn_add_odd_file = tk.Button(btn_frame_odd_files, text="파일 추가", command=lambda: add_file_to_list(listbox_odd_files)) btn_add_odd_file.pack(fill="x", padx=5, pady=5) btn_remove_odd_file = tk.Button(btn_frame_odd_files, text="선택파일 삭제", command=lambda: remove_selected_file(listbox_odd_files)) btn_remove_odd_file.pack(fill="x", padx=5, pady=5) btn_move_up_odd = tk.Button(btn_frame_odd_files, text="위로 이동", command=lambda: move_up(listbox_odd_files)) btn_move_up_odd.pack(fill="x", padx=5, pady=5) btn_move_down_odd = tk.Button(btn_frame_odd_files, text="아래로 이동", command=lambda: move_down(listbox_odd_files)) btn_move_down_odd.pack(fill="x", padx=5, pady=5) # 실행 버튼 btn_execute = tk.Button(root, text="실행", command=execute_task, font=("맑은 고딕", 14, "bold"), bg="#00484D", fg="white") btn_execute.place(x=10, y=550, width=770, height=40) root.mainloop() 그리고 제가 추출하는데 사용한 것은pyinstaller --onefile --noconsole --icon="C:\\Users\\user\\Desktop\\@공유\\JINA\\0__exe\\페이지 자동 맞춤 프로그램\\icon.ico" --hidden-import=pyhwpx --hidden-import=subprocess page_numbering_v2.py이거에요. 뭐가 문제일까요? 따뜻한 연말 되시기 바라며,감사합니다.
-
해결됨세상에서 제일 쉬운 러스트 프로그래밍
러스트로 파이썬 패키지 만들기 실습을 해보면 에러가 발생합니다
pipenv shell 환경에서 maturin develop 을 하면 아래와 같이 오류가 뜹니다(pyo3-9vp6XEz5) D:\D\Work\study\Rust\inflean\easy-rust\pyo3>maturin develop🔗 Found pyo3 bindings🐍 Found CPython 3.12 at C:\Users\INNO-A-1328\.virtualenvs\pyo3-9vp6XEz5\Scripts\python.exe📡 Using build options features from pyproject.tomlCompiling once_cell v1.20.2Compiling unindent v0.2.3Compiling cfg-if v1.0.0Compiling libc v0.2.169Compiling pyo3-build-config v0.23.3Compiling memoffset v0.9.1Compiling pyo3-ffi v0.23.3Compiling pyo3-macros-backend v0.23.3Compiling pyo3 v0.23.3Compiling pyo3-macros v0.23.3Compiling fibonacci v0.1.0 (D:\D\Work\study\Rust\inflean\easy-rust\pyo3)error[E0599]: no method named add_function found for reference &pyo3::types::PyModule in the current scope--> src\lib.rs:17:7|17 | m.add_function(wrap_pyfunction!(run, m)?)?;| ^^^^^^^^^^^^ method not found in &PyModuleerror[E0277]: the trait bound &pyo3::types::PyModule: WrapPyFunctionArg<'_, _> is not satisfied--> src\lib.rs:17:42|17 | m.add_function(wrap_pyfunction!(run, m)?)?;| ----------------------^-| | || | the trait WrapPyFunctionArg<'_, _> is not implemented for &pyo3::types::PyModule| required by a bound introduced by this call|= help: the following other types implement trait WrapPyFunctionArg<'py, T>:&pyo3::Borrowed<'_, 'py, pyo3::types::PyModule>&pyo3::Bound<'py, pyo3::types::PyModule>pyo3::Borrowed<'_, 'py, pyo3::types::PyModule>pyo3::Bound<'py, pyo3::types::PyModule>pyo3::Python<'py>error[E0277]: the trait bound &pyo3::types::PyModule: From<BoundRef<'_, '_, pyo3::types::PyModule>> is not satisfied--> src\lib.rs:15:1|15 | #[pymodule]| ^^^^^^^^^^^ the trait From<BoundRef<'_, '_, pyo3::types::PyModule>> is not implemented for &pyo3::types::PyModule, which is required by BoundRef<'_, '_, pyo3::types::PyModule>: Into<_>|= note: required for BoundRef<'_, '_, pyo3::types::PyModule> to implement Into<&pyo3::types::PyModule>= note: this error originates in the attribute macro pymodule (in Nightly builds, run with -Z macro-backtrace for more info)Some errors have detailed explanations: E0277, E0599.For more information about an error, try rustc --explain E0277.error: could not compile fibonacci (lib) due to 3 previous errors💥 maturin failed #[pymodule] 이하 부분을 주석처리하면 아래 에러는 해결되나 python main.py 실행하면 fibonacci 를 찾을 수 없다는 에러가 발생합니다
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
코랩으로 수업을 진행해도 괜찮은지 궁금합니다.
안녕하세요 강사님! 해당 강의에서 주피터로 코딩을 하는 것 같은데혹시 주피터노트북 대신 코랩으로 실습을 진행해도 문제 없을까요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
네이버지식인 gui 추출하기
안녕하세요맥으로 수강중인 사람입니다.다름이아니라 네이버지식인gui를vscode에서 코드 실행 후 저장버튼을 누르면 엑셀파일로 저장이 잘되었는데 실행파일로 만들고 추출한다음 저장버튼을 누르면 저장이 되지않습니다이유를 알수있을가요?코드를 다시봐도 문제는 없는데 이유를 못찾겠습니다ㅠㅠ
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
커널(★Python 3.12.8 ~~맞춤 vs Python 3.12.8 ~~ Global Env)이 서로 다른것인가요?
안녕하세요오늘 네이버지식인GUI.exe를 만드는데 성공하였습니다. 그런데 처음에는 실패했습니다.그이유는 커널이 이미지에서 위에 것(★Python 3.12.8 ~~~ 맞춤)으로 되어 있었습니다.pip install pyinstaller 해도 설치가 안된것으로 나왔습니다.(pip --version으로 확인) 그런데 아래것(Python 3.12.8 ~~~Global Env) 선택하니 모든것이 잘 되었습니다. [문의사항]위에것 아래것 모두 버전이 Python3.12.8로 동일한데 이 두개가 서로 다른것인가요?만약 다르다면저는 python을 오늘 삭제하고 Python3.12.8을 1번만 설치했습니다. 이렇게 두개가 보이는 이유는 무엇일까요? 감사합니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
graphviz download
안녕하세요.현재 graphviz 버전이 12.2.1까지 나와있는데, 이 버전을 다운 받아도 문제 없이 수업 진행이 가능 한 건가요?
-
해결됨Prompt Engineering: 완벽 가이드
강의 자료 질문입니다
안녕하세요실습하다 소설 스크립트 넣는 부분 듣는데 혹시 강의 자료에서 PPT 외에 프롬프트 실습 스크립트는 없나요?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
3020번 풀이 코드관련 질문있어요
어느 파트 이분 탐색 알고리즘[문제풀이] :BOJ 3020자신은 어떻게 이해했는지이분탐색을 통해 top 과 bottom을 따로 나눠서 탐색하는 것 까지는 이해했습니다.어떤 부분이 궁금한지 get_idx(bots, h - 1) + 1 과 get_idx(tops, h) + 1 이 부분에서 구하려고 하는 높이의 직전 index를 구하는 것 까지는 이해하였으나, 왜 1을 더하는 지는 이해가 잘 되질 않습니다.해당 부분에 대해서 좀더 자세한 설명 부탁드리겠습니다.
-
미해결Airflow 마스터 클래스
다중 스케줄러 실행 시 확인 방법 문의
강사님, 안녕하세요.다중 스케줄러 실행 시 정상적으로 동작하고 있는지 확인할 수 있는 방법에 대해 문의드립니다.현재 Worker와 Scheduler를 다중으로 실행하여 고가용성 테스트를 진행 중입니다. Worker의 경우 Celery Flower를 통해 정상적으로 Sync가 이뤄지는 것을 확인하였습니다. 다만 Scheduler의 경우 뭔가 정확하게 확인이 안되는 것 같습니다.우선 제가 찾은 방법으로는 메타 테이블 조회와 커맨드가 있습니다.메타 테이블 조회 아래와 같이 조회하면 running인 상태의 host가 Scheduler 수만큼 조회됩니다. hostname도 모두 일치합니다.select * from job where job_type = 'SchedulerJob' and state = 'running';커맨드 아래와 같이 커맨드 실행 시 'Found one alive job.'이 출력됩니다.$ airflow jobs check --job-type SchedulerJob Found one alive job.Scheduler 로그 확인 시 모두 heartbeat은 계속 요청하고 있습니다. 혹시 Worker와 같이 명확하게 다중 스케줄러 환경인지 확인하는 방법이 있을까요?
-
미해결Airflow 마스터 클래스
dag list가 안보이는 이유..
variables 를 추가하는 강의에서variables 추가하고, dags_bash_with_variable.py를 생성후, git push 하고 나중에 봣더니그 많던 dag(examples + 강의때 따라한 dag) 들중에 딸랑 3개만 보이고 안보여요..dags 폴더 하위를 찾아가보니 파일은 그대로 존재하는데.. 왜 3개만보이는건지 ..혹시 확인해볼만한 로그들이나... 이유에 대해서 아실까요..? docker exec -it {스케줄러노드ID} bash 로 들어가서 dags도 확인해봤습니다.
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
주피터 노트북 관련해서 궁금한게 있습니다!
안녕하세요.주피터 노트북을 다운받았는데 강사님 인터페이스에서는 In []이렇게 나오는데 저는 In이 나오지 않아서요..혹시 제가 잘못 설치한건가 싶어서 여쭤봅니다
-
미해결퀀트 투자를 위한 파이썬 트레이딩룸 만들기 - Part 1
MACD & 오실레이터 with EXCEL 강의 데이터 문의
Mt = w * Pt + (1-w) * Mt-1 에서날짜가 과거시점으로 가야하는것 같은데..강의 및 엑셀자료는 미래시점으로 계산된것 같습니다.데이터를 역순으로 바꿔서 계산을 해야 할 것 같은데 확인 부탁드리겠습니다.감사합니다.
-
미해결문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!
아나콘다 설치시에 jupyter lab이 안깔렸어요
jupyter notebook은 다운이 되었는데 lab이 없어요.. 그래서 실행이 안되는걸까요? 아나콘다 창에서 주피터 랩을 쳐서 실행시켜도 강의처럼 창이 안뜹니다..
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
코드질문드려요
(기출) 2023년 1회 코드해석문제 5분40초 printf("%s\n",p); 에서 p는 *이 안붙어있으니 주솟값이 나와야하지 않나요??
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
1-10강 문제풀이중...
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?섹션1에 10강을 수강하고있습니다1-10. 알고리즘 더 풀어보기 (2) 2. 어려움을 겪는 부분강사님께서 제공해주신 문제를 먼저 풀어보았는데아래처럼 내장함수를 이용해서 풀어도 되나? 궁금합니다. 최대한 저런 함수 사용하지 않고 강사님께서 제공해주시는 풀이법으로 알고리즘을 공부하는게 맞는거같은데.. 저처럼 풀면 안되는건가 싶어서요...ㅠㅠ 알고리즘적인 생각이 아닌가도 싶고 ㅠㅠ 고민입니다!일단 char로 순서대로 돌꺼고 어차피 갯수가 1이면 바로 char 을 return해 주면 되지 않을까? 해서 아래처럼 해보았습니다...def find_not_repeating_first_character(string): # 이 부분을 채워보세요! for char in string: if string.count(char) == 1: return char return "_" 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
1717번 최적화
union find 최적화 과정 중 union 최적화에서rank[a]와 rank[b]가 같을때는 아래로 가는 트리? 높이의 rank를 1 증가해줬는데 왜 다를때는 rank를 증가 안해주나요?증가해주는게 맞지않나? 싶어서 여쭤봅니다.
-
미해결FastAPI 완벽 가이드
connection pool과 관련해 질문을 드립니다.
sqlalchemy 강의 내용에 보면 connection pool에 대한 이론과 실습 설명이 있었습니다.헌데 비동기를 이용하여 하나의 connection pool만 사용하는 것으로 실습과 코드가 마무리 되더군요.제가 생각할 때, connection pool을 제대로 사용하기 위해서는 사용 가능한 모든 pool 을 병렬로 처리해야 하지 않을까란 생각이 들었습니다.하지만, 비동기 병렬 처리를 하게 되면 트랜잭션 락으로 인해 race condition 상태 등의 더 복잡한 문제가 발생할거 같은데, 사용하는게 맞는가란 생각도 들었습니다.이에 아래와 같은 질문을 드리려 합니다.1. 실무에서 사용시 connection pool로 할당한 수만큼 비동기 병렬로 처리를 하는게 맞는지요?2. 만약 맞다면, 트랜잭션 락은 어떻게 구현하여 사용하는게 일반적인지요?혹은, 예제와 달리, fastapi에서는 요청이 들어오는대로 각각의 connection pool에 할당을 하고 10개가 넘는 경우는 대기를 하다 반환된 pool에 배치되는건지요?