파이썬 배치 파일 오류 도움 부탁드립니다.
천중도

Lv.1 천중도 (211.♡.46.166)

2024년 7월 6일 PM 01:55 · 수정됨(07. 09. 04:55)

조회 371 공감 0

안녕하십니까~ 

파이썬을 공부해보고 있는데  엑셀 변환 프로그램을 만들고 있는 중 실행 파일에서 막혀서 도움 요청 드리려고 합니다. ;;  

tkdnd 기능이 vscode 에서 실행 할때는 잘되는데 배치파일(exe)로 만들어서 하면 아래 오류 부분이 발생해서 

작동이 안되네요 ㅜㅜ .. 혹시 가르침을 주실 분 계실까요 ?  감사합니다.


Traceback (most recent call last):
File "tkinterdnd2\TkinterDnD.py", line 53, in _require
_tkinter.TclError: can't find package tkdnd

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "Amkor1.py", line 262, in <module>
File "tkinterdnd2\TkinterDnD.py", line 285, in __init__
File "tkinterdnd2\TkinterDnD.py", line 55, in _require
RuntimeError: Unable to load tkdnd library.
[7672] Failed to execute script 'Amkor1' due to unhandled exception!

댓글 (8)

  • 달2

    달2 Lv.1

    24.07.06 · 211.♡.135.31

    보통 이런 오류는 exe 파일을 생성할때 필요한 라이브러리(tkdnd)가 포함되지 않아서 일거에요.
    exe 파일 생성할때 필요 라이브러리를 포함하도록 하는 옵션이 있을거에요.
  • CURITEL

    CURITEL Lv.1 → 달2 작성자

    24.07.06 · 223.♡.242.63

    감사합니다 ^^
  • cpp64

    cpp64 Lv.1

    24.07.06 · 39.♡.174.51

    pyinstaller 로 변환하는 거라면 만들 때 --onefile 옵션 추가해보세요.
  • CURITEL

    CURITEL Lv.1 → cpp64 작성자

    24.07.06 · 223.♡.242.63

    옵션 추가해서 해보겠습니다 감사합니다
  • 찰리브라운

    찰리브라운 Lv.1

    24.07.07 · 182.♡.14.187

    위의 문제를 해결하기 위해 몇 가지 추가 조치를 취해야 합니다. 특히, `tkdnd` 라이브러리와 `tkinterdnd2` 모듈을 포함하여 배포할 때 필요한 구성 요소를 정확히 포함시키는 것이 중요합니다. 아래의 단계를 따라 문제를 해결해 보세요:

    1. **`tkdnd` 라이브러리 파일 찾기:**
    `tkdnd` 라이브러리가 설치된 위치를 확인합니다. 일반적으로 `tkdnd`는 Tcl/Tk 확장 라이브러리로 설치됩니다.

    ```bash
    find /path/to/python/site-packages -name "tkdnd*"
    ```

    위 명령어를 사용하여 `tkdnd` 라이브러리 파일의 위치를 찾을 수 있습니다. Windows에서는 해당 경로를 수동으로 탐색하여 찾을 수 있습니다.

    2. **`tkdnd` 라이브러리 복사:**
    PyInstaller의 `--add-binary` 옵션을 사용하여 `tkdnd` 라이브러리를 실행 파일에 포함시킵니다.

    ```bash
    pyinstaller --onefile --add-binary "path/to/tkdnd;tkinterdnd2/tkdnd" your_script.py
    ```

    예를 들어, `tkdnd` 라이브러리가 `C:\Python38\Lib\site-packages\tkdnd`에 설치되어 있다면:

    ```bash
    pyinstaller --onefile --add-binary "C:/Python38/Lib/site-packages/tkdnd/tkdnd2.8;tkinterdnd2/tkdnd" your_script.py
    ```

    3. **hook 파일 생성 및 수정:**
    이미 언급된 `hook-tkinterdnd2.py` 파일을 다음과 같이 작성합니다:

    ```python
    from PyInstaller.utils.hooks import collect_data_files, collect_dynamic_libs

    datas = collect_data_files('tkinterdnd2')
    binaries = collect_dynamic_libs('tkinterdnd2')
    ```

    이 파일을 프로젝트 디렉터리의 `hooks` 디렉터리에 저장합니다.

    4. **PyInstaller 실행:**
    PyInstaller를 실행할 때 추가적인 hook 디렉터리를 지정합니다.

    ```bash
    pyinstaller --additional-hooks-dir=./hooks --onefile --add-binary "path/to/tkdnd;tkinterdnd2/tkdnd" your_script.py
    ```

    5. **실행 파일 테스트:**
    생성된 실행 파일을 테스트하여 `tkdnd` 라이브러리가 제대로 포함되어 실행되는지 확인합니다.

    이 단계를 통해 `tkinterdnd2`와 `tkdnd` 라이브러리를 포함한 실행 파일을 생성할 수 있을 것입니다. 추가적인 문제가 발생할 경우, 해당 에러 메시지를 참고하여 필요한 추가 설정을 할 수 있습니다.
  • 참을수없는존재의간지러움

    참을수없는존재의간지러움 Lv.1 → 찰리브라운

    24.07.07 · 106.♡.197.116

    AI 답변인가요?
  • 찰리브라운

    찰리브라운 Lv.1 → 참을수없는존재의간지러움

    24.07.07 · 182.♡.14.187

    네 ai답변입니다
  • CURITEL

    CURITEL Lv.1 → 찰리브라운 작성자

    24.07.09 · 211.♡.194.107

    노트북이 고장이나서 못해보고 있는데, 고쳐지는대로 알려주신내용으로 해보겠습니다 감사합니다^^

댓글을 작성하려면 이 필요합니다.