작성
·
93
·
수정됨
0
실행 파일을 생성시에 사용된 모든 파일이 동일 디렉토리에 있어야 하나요?
(재활용을 위해 Function을 만들어서, Function 폴더에 저장함)
아래는 제가 작업했던 내용 및 에러입니다.
============================
Python 폴더 아래와 같이 폴더가 있습니다.
Project
GUI
Function
Project 폴더에 실행할 a.py 파일이 있고
a.py에서는 GUI, Function 폴더에 있는 ui와 function 들을 사용합니다.
vs code 상에서 실행하면 문제 없이 실행이 됩니다.
실행 파일을 만들기 위해 Project dir로 이동하고, 아래와 같이 실행하여 exe 파일을 생성했습니다.
E:\python\Project> pyinstaller -w -F 네이버부동산_상가.py
파일을 실행하니 아래와 같이 나타납니다.
import sys, os
try:
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))
except:
notebook_dir = os.getcwd()
sys.path.append(os.path.dirname(os.path.abspath(notebook_dir)))
from PySide6.QtWidgets import QApplication, QWidget, QMessageBox
from GUI.naverland_SG_ui import Ui_Form
from GUI.Naver_map import *
from Functions.Naver_land import *
import sys
import requests
import json
import math
class MainWindow(QWidget, Ui_Form):
def __init__(self):
super().__init__()
self.setupUi(self)
self.file_path = os.getcwd() + r'\data'
# 지역 초기화
self.loc1.clear()
self.loc1.addItem('')
self.loc2.clear()
self.loc2.addItem('')
self.loc3.clear()
self.loc3.addItem('')
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
실행 파일을 만들 때 모든 파일이 동일한 디렉토리에 있을 필요는 없습니다. 하지만, 실행 파일을 생성할 때 사용되는 모듈과 리소스 파일들이 올바르게 참조될 수 있도록 설정해야 합니다. 사용하신 pyinstaller
를 이용하여 실행 파일을 생성하실 때, 해당 모듈이 참조하는 다른 폴더에 있는 파일들도 함께 포함되도록 하기 위해 몇 가지 방법을 사용할 수 있습니다.
--add-data
옵션을 사용하여 필요한 추가 파일이나 디렉토리를 지정할 수 있습니다. 이 옵션을 통해 필요한 리소스 파일이나 모듈 디렉토리를 지정할 수 있으며, 사용법은 다음과 같습니다.
pyinstaller --add-data "src;dest" your-script.py
src
는 포함할 파일/디렉토리의 경로이고, dest
는 실행 파일 내에서 해당 파일/디렉토리가 위치할 경로입니다.hook
파일을 만들어 pyinstaller
가 모듈을 찾을 수 있도록 도와줄 수도 있습니다. hook
파일은 특정 라이브러리나 패키지에 대해 pyinstaller
가 처리 방법을 알려주는 역할을 합니다.
스크립트 내에서 동적으로 모듈 경로를 추가하는 방법인 sys.path.append
를 사용하셨는데, 이 경우에도 pyinstaller가 해당 디렉토리의 모듈을 찾을 수 있도록 옵션을 추가해야 합니다.
오류 메시지에 따르면 ‘GUI’ 모듈을 찾지 못하는 문제가 발생했습니다. 이는 pyinstaller
가 GUI
모듈이 포함된 디렉토리를 찾지 못했거나, 실행 파일을 생성할 때 해당 디렉토리를 포함시키지 않았기 때문일 수 있습니다.
따라서, --add-data
옵션을 사용하여 필요한 모든 파일과 디렉토리를 포함시키는 것이 중요합니다. 예를 들어, GUI와 Function 폴더를 실행 파일에 포함시키기 위해서는 다음과 같이 명령어를 작성할 수 있습니다.
pyinstaller -w -F --add-data "GUI;GUI" --add-data "Functions;Functions" 네이버부동산_상가.py
이렇게 하면 GUI 및 Functions 디렉토리와 그 안의 모든 파일이 실행 파일에 포함되어 참조 오류 없이 프로그램이 실행될 것입니다.
감사합니다. 같은 폴더에서는 잘 되는 것 확인했습니다. ^^