پایگاه آی‌دی اِی‌پی‌آی
«کدنویسی، پروژه، موفقیت»


ابزار بسته‌بندی پایتون به EXE

ابزار بسته‌بندی پایتون به EXE ابزار بسته‌بندی پایتون به EXE

IDAPI.IR – برنامه‌نویسی، طراحی وب و راهکارهای دیجیتال

فرض کن پروژه پایتونت تموم شده، از همه خطای دیباگ رد شدی و حالا می‌خوای یه فایل EXE درست حسابی بسازی که روی هر سیستم ویندوزی بدون نیاز به نصب پایتون اجرا بشه. این یعنی میخوای محصولت “آماده مصرف” باشه، نه یه اسکریپت خام. تو این پست، همه چیز رو قدم به قدم توضیح می‌دم، از آماده‌سازی پروژه گرفته تا ساخت EXE با آیکون و کتابخانه‌ها.

چرا تبدیل پایتون به EXE مهمه؟

خب، شاید بپرسی: «پایتون که روی سیستمم نصبه، چرا باید EXE بسازم؟» جواب ساده است: وقتی یه کاربر عادی می‌خواد برنامه‌ت رو اجرا کنه، نباید دنبال نصب پایتون و وابستگی‌ها باشه. یه EXE آماده یعنی محصول حرفه‌ای، سریع و قابل توزیع. خلاصه:

  • راحت برای کاربر نهایی
  • بدون نیاز به نصب پایتون
  • مناسب انتشار و ارائه پروژه

ابزارهای محبوب برای بسته‌بندی

چند ابزار هست که می‌تونی باهاش پروژه پایتون رو به EXE تبدیل کنی:

  1. PyInstaller – محبوب‌ترین، ساده و قدرتمند
  2. cx_Freeze – کنترل بیشتر روی ساختار فایل‌ها
  3. py2exe – مخصوص ویندوز، اما محدودتر از PyInstaller

تو این راهنما، تمرکز روی PyInstaller هست چون:

  • راحت نصب میشه
  • کاملاً مستنداته
  • امکاناتی مثل اضافه کردن آیکون و کتابخانه‌ها رو راحت پشتیبانی می‌کنه

آماده‌سازی پروژه قبل از بسته‌بندی

قبل از هر کاری، مطمئن شو پروژه‌ت آماده است:

  1. پاک کردن فایل‌های دیباگ و موقت – مثل __pycache__ و .pyc
  2. نصب همه وابستگی‌ها – با pip install همه بسته‌ها رو نصب کن
  3. ساخت فایل requirements.txt – دستور:
pip freeze > requirements.txt

این کار باعث میشه وقتی پروژه بسته‌بندی میشه، مطمئن باشی همه کتابخانه‌ها در نظر گرفته شدن. کلیه دستورهایی که در این آموزش داده میشود باید در ترمینال اجرا شوند. بعد از اینکه کلیه وابستگی‌های پروژه شما در فایل مد نظر گنجانده شد، برای هر پروژه باید این موارد تکرار شوند.

نصب و استفاده از PyInstaller

نصب

اگر هنوز PyInstaller رو نصب نکردی:

pip install pyinstaller

فرمان پایه‌ای برای ساخت EXE

فرض کن فایل اصلی پروژه‌ت main.py هست:

pyinstaller main.py

این فرمان یک فولدر dist و build می‌سازه و EXE تو dist/main/ قرار می‌گیره.

افزودن همه وابستگی‌ها و کتابخانه‌ها

گاهی EXE ساخته میشه اما برنامه اجرا نمیشه، چون یه کتابخانه فراموش شده. برای اطمینان از اینکه همه کتابخانه‌ها در EXE هستن، از این دستور استفاده کن:

pyinstaller --onefile --hidden-import=package_name main.py
  • --onefile یک فایل EXE تولید می‌کنه به جای فولدر
  • --hidden-import برای کتابخانه‌هایی که PyInstaller خودش تشخیص نمیده

برای چند کتابخانه، چند بار --hidden-import اضافه کن یا از یه فایل spec استفاده کن. PyInstaller خودش یه فایل .spec ایجاد می‌کنه که می‌تونی ادیتش کنی و همه وابستگی‌ها رو مشخص کنی.

اضافه کردن آیکون به EXE

برای حرفه‌ای‌تر شدن پروژه، می‌تونی یه آیکون سفارشی اضافه کنی:

pyinstaller --onefile --icon=icon.ico main.py
  • آیکون باید فرمت .ico داشته باشه
  • می‌تونی با ابزارهای آنلاین .png رو به .ico تبدیل کنی

دقت کنید: مراحل نصب PyInstaller یکبار بیشتر لازم نیست. بعد شما در هر بار تلاش طبق دستور ترمینال میتونید خروجی EXE خود را در حالت‌های مد نظر بسازید؛ مثلاً با کنسول، بدون کنسول، یا با کلیه کتابخانه‌ها. در انتهای آموزش لیستی از دستورات با توضیحات درج شده که به آسودگی می‌تونید استفاده کنید.

نکات پیشرفته و رفع مشکل‌ها

EXE تک فایل یا فولدر؟

  • --onefile = راحت برای توزیع، ولی زمان اجرا کمی طولانی‌تر
  • فولدر = سریع‌تر اجرا میشه، اما فایل‌ها جدا هستن

رفع ارورهای معمول

  • Missing DLL: بعضی کتابخانه‌ها نیاز به DLL خاص دارن، اون‌ها رو در مسیر پروژه قرار بده
  • Encoding: مطمئن شو تمام فایل‌ها UTF-8 هستن

چک کردن فایل‌های اضافه یا حذف نشده

  • بعد از ساخت EXE، پروژه رو روی یه سیستم دیگه تست کن بدون نصب پایتون

جمع‌بندی

خب، تا اینجا همه چیز رو پوشش دادیم:

  1. آماده‌سازی پروژه و نصب کتابخانه‌ها
  2. استفاده از PyInstaller برای ساخت EXE
  3. افزودن کتابخانه‌ها و آیکون
  4. تست و رفع مشکلات

حالا پروژه پایتونت آماده ارائه به هر کاربریه، بدون اینکه نیاز داشته باشه چیزی نصب کنه. حرفه‌ای شدی!

چک‌لیست دستورات PyInstaller

دستور توضیح نکات مهم
pyinstaller main.py ساخت EXE پایه از فایل main.py خروجی تو dist/main/؛ فولدر حاوی EXE و فایل‌های وابسته
pyinstaller --onefile main.py ساخت یک فایل EXE تک راحت برای توزیع، ولی زمان اجرا کمی طولانی‌تر
pyinstaller --noconsole main.py اجرای EXE بدون نمایش کنسول مناسب برنامه‌های GUI مثل Tkinter یا PyQt
pyinstaller --console main.py اجرای EXE همراه با کنسول مناسب برنامه‌های خط فرمان
pyinstaller --onefile --noconsole main.py EXE تک فایل و بدون کنسول مناسب برنامه GUI مستقل
pyinstaller --icon=icon.ico main.py افزودن آیکون به EXE فرمت باید .ico باشه؛ می‌تونی PNG رو آنلاین به ICO تبدیل کنی
pyinstaller --add-data "file.txt;." main.py افزودن فایل‌های اضافی مثل عکس یا دیتابیس مسیر سمت چپ فایل پروژه، مسیر سمت راست مقصد در EXE
pyinstaller --hidden-import=package_name main.py اضافه کردن کتابخانه‌هایی که PyInstaller تشخیص نمی‌ده برای هر کتابخانه جدا دستور بذار یا از فایل spec استفاده کن
pyinstaller --clean main.py پاک کردن فایل‌های build و dist قبل از ساخت جلوگیری از فایل‌های اضافی یا قدیمی
pyinstaller --debug main.py فعال کردن حالت دیباگ برای بررسی ارورهای اجرا
pyinstaller --paths=path_to_module main.py افزودن مسیر اضافی برای پیدا کردن ماژول‌ها وقتی کتابخانه‌ها در مسیر غیر استاندارد هستن
pyinstaller --upx-dir=UPX_PATH main.py فشرده‌سازی EXE با UPX کاهش حجم فایل خروجی؛ نیاز به نصب UPX
pyinstaller --noconfirm main.py نادیده گرفتن تاییدیه‌ها وقتی می‌خوای چندین بار بسازی بدون وقفه
pyinstaller --specpath=SPEC_PATH main.py مشخص کردن مسیر ذخیره فایل .spec مناسب وقتی پروژه بزرگ و ساختار پیچیده داره

💡 نکته طلایی

برای پروژه‌های پیچیده بهتره از فایل spec استفاده کنی. PyInstaller وقتی اولین بار EXE می‌سازه یه فایل .spec می‌سازه که می‌تونی همه تنظیمات مثل کتابخانه‌ها، فایل‌های اضافی، آیکون و مسیرها رو اونجا دقیق کنترل کنی و بعد فقط دستور pyinstaller project.spec بزنی.

💬 نیاز به کمک داری؟
اگر در هر مرحله از استفاده یا آموزش با مشکلی مواجه شدی یا سوالی برات پیش اومد، می‌تونی از بخش گفتگوی زنده که در سمت راست و پایین صفحه قرار داره، با پشتیبانی در ارتباط باشی. تیم ما آماده‌ست تا قدم به قدم راهنماییت کنه و به همه سوال‌هات جواب بده.

گفتگوی زنده