IDAPI.IR – برنامهنویسی، طراحی وب و راهکارهای دیجیتال
فرض کن پروژه پایتونت تموم شده، از همه خطای دیباگ رد شدی و حالا میخوای یه فایل EXE درست حسابی بسازی که روی هر سیستم ویندوزی بدون نیاز به نصب پایتون اجرا بشه. این یعنی میخوای محصولت “آماده مصرف” باشه، نه یه اسکریپت خام. تو این پست، همه چیز رو قدم به قدم توضیح میدم، از آمادهسازی پروژه گرفته تا ساخت EXE با آیکون و کتابخانهها.
چرا تبدیل پایتون به EXE مهمه؟
خب، شاید بپرسی: «پایتون که روی سیستمم نصبه، چرا باید EXE بسازم؟» جواب ساده است: وقتی یه کاربر عادی میخواد برنامهت رو اجرا کنه، نباید دنبال نصب پایتون و وابستگیها باشه. یه EXE آماده یعنی محصول حرفهای، سریع و قابل توزیع. خلاصه:
- راحت برای کاربر نهایی
- بدون نیاز به نصب پایتون
- مناسب انتشار و ارائه پروژه
ابزارهای محبوب برای بستهبندی
چند ابزار هست که میتونی باهاش پروژه پایتون رو به EXE تبدیل کنی:
- PyInstaller – محبوبترین، ساده و قدرتمند
- cx_Freeze – کنترل بیشتر روی ساختار فایلها
- py2exe – مخصوص ویندوز، اما محدودتر از PyInstaller
تو این راهنما، تمرکز روی PyInstaller هست چون:
- راحت نصب میشه
- کاملاً مستنداته
- امکاناتی مثل اضافه کردن آیکون و کتابخانهها رو راحت پشتیبانی میکنه
آمادهسازی پروژه قبل از بستهبندی
قبل از هر کاری، مطمئن شو پروژهت آماده است:
- پاک کردن فایلهای دیباگ و موقت – مثل
__pycache__و.pyc - نصب همه وابستگیها – با
pip installهمه بستهها رو نصب کن - ساخت فایل 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، پروژه رو روی یه سیستم دیگه تست کن بدون نصب پایتون
جمعبندی
خب، تا اینجا همه چیز رو پوشش دادیم:
- آمادهسازی پروژه و نصب کتابخانهها
- استفاده از PyInstaller برای ساخت EXE
- افزودن کتابخانهها و آیکون
- تست و رفع مشکلات
حالا پروژه پایتونت آماده ارائه به هر کاربریه، بدون اینکه نیاز داشته باشه چیزی نصب کنه. حرفهای شدی!
چکلیست دستورات 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 بزنی.
💬 نیاز به کمک داری؟
اگر در هر مرحله از استفاده یا آموزش با مشکلی مواجه شدی یا سوالی برات پیش اومد، میتونی از بخش گفتگوی زنده که در سمت راست و پایین صفحه قرار داره، با پشتیبانی در ارتباط باشی. تیم ما آمادهست تا قدم به قدم راهنماییت کنه و به همه سوالهات جواب بده.