בירור | אחרי שכתבתי סקריפט ואני רוצה לייצא את זה לקובץ רגיל איך עושים זאת
-
@יצחק-בר אז איך עושים קובץ EXE שמספיק לשמור אותו לבד, בלי להחזיק אותו באותו תיקייה עם הקבצים, אלא שאפשר להעתיק אותו מהמחשב?
@תותחוביץ לא יודע אני ממש מתחיל בתחום הזה אבל שאלתי את gpt וזה מה שהוא ענה לי
עריכה ראיתי שמאוד קשה לקרוא את הצילום מסך אז הוספתי את זה
הטמעה (embedding) של קבצים בתוך קובץ ה-EXE
כשאתה יוצר קובץ exe בעזרת PyInstaller או כלי דומה – אפשר להכניס לתוכו גם תמונות, סאונדים ושאר קבצים כך שלא תצטרך להחזיק תיקיות נפרדות.איך עושים את זה עם PyInstaller:
- השתמש בפקודה הבאה ליצירת קובץ EXE:
pyinstaller --onefile --add-data "images/logo.png;images" --add-data "sounds/click.wav;sounds" main.py
הסבר:
--onefile = יוצר קובץ exe יחיד.--add-data = מוסיף קבצים לקובץ ה־exe.
הפורמט: "נתיב_לקובץ;נתיב_יעד_בתוך_EXE"
אם אתה על Windows: השתמש ב-; (סימן נקודה-פסיק)
אם אתה על Mac/Linux: השתמש ב-: (סימן נקודתיים)
לדוגמה:
--add-data "assets/bg.jpg;assets"
--add-data "audio/music.mp3;audio"
2. בתוך הקוד שלך – גש לקבצים עם sys._MEIPASS:import sys
import osdef resource_path(relative_path):
try:
base_path = sys._MEIPASS # כשמריצים EXE
except AttributeError:
base_path = os.path.abspath(".") # כשמריצים רגיל מ-Python
return os.path.join(base_path, relative_path)
ואז תשתמש בזה ככה:
image_path = resource_path("images/logo.png")
sound_path = resource_path("sounds/click.wav")
טיפ נוסף:
אם יש לך הרבה קבצים בתיקייה, אתה יכול להוסיף תיקייה שלמה:--add-data "images;images"
--add-data "sounds;sounds"
רוצה שאעזור לך לבנות את הפקודה המדויקת לקבצים שלך? תשלח לי:את שם הקובץ הראשי (main.py או אחר)
אילו תיקיות של מדיה יש (תמונות, סאונד, וידאו וכו')
ואני אחזיר לך בדיוק את הפקודה והקוד.
-
@אלישי כתב בבירור | אחרי שכתבתי סקריפט ואני רוצה לייצא את זה לקובץ רגיל איך עושים זאת:
אפשרות נוספת יותר נפוצה ופופולארית:
פתח את שורה הפקודה (CMD) בתיקייה שם מופיע הסקריפט שכתבת, ותקליד שם:pip install pyinstaller
אחרי ההתקנה תקליד (תחליף את SCRIPT.py בשם של הסקריפט שלך):
pyinstaller --onefile SCRIPT.py
הקובץ שנוצר יהיה בתיקיית dist
כדאי גם להוסיף את הדגל
--noconsol
אני אישית מקמפל את הקוד עם האפשרות השניה עם הקונסול, רואה שהכל עובד תקין ואין שום שגיאות ואז מקמפל שוב עם הדגל הנ"ל
@יוסף-אלחנן מה זה מוסיף לי הקמפול השני?
-
@יוסף-אלחנן מה זה מוסיף לי הקמפול השני?
-
@יוסף-אלחנן מה זה מוסיף לי הקמפול השני?