5. استفاده از پایتون در macOS¶
هدف این سند، ارائهی مروری کلی بر رفتارهای اختصاصی macOS است که برای شروع کار با پایتون روی رایانههای مک باید از آنها آگاه باشید. پایتون روی مکی که macOS را اجرا میکند، بسیار شبیه به پایتون روی سایر پلتفرمهای برگرفته از یونیکس است، اما تفاوتهایی در نصب و برخی ویژگیها وجود دارد.
روشهای مختلفی برای دریافت و نصب پایتون در macOS وجود دارد. نسخههای از پیش ساختهشدهی جدیدترین نسخههای پایتون از تعدادی توزیعکننده در دسترس هستند. بخش عمدهی این سند به استفاده از پایتونهایی میپردازد که تیم انتشار سیپایتون آنها را برای دانلود از وبسایت python.org ارائه کرده است. برای برخی گزینههای دیگر، توزیعهای جایگزین را ببینید.
5.1. استفاده از پایتون برای مکاواس از python.org¶
5.1.1. مراحل نصب¶
برای نسخههای فعلی پایتون (بهجز نسخههایی که در وضعیت security قرار دارند)، تیم انتشار برای هر انتشار جدید یک بستهی نصبکنندهی Python for macOS تولید میکند. فهرستی از نصبکنندههای موجود اینجا در دسترس است. توصیه میکنیم در صورت امکان، از جدیدترین نسخهی پشتیبانیشدهی پایتون استفاده کنید. نصبکنندههای فعلی، یک ساخت دودوییِ universal2 از پایتون ارائه میدهند که بهطور بومی روی همهی مکها (Apple Silicon و Intel) اجرا میشود؛ مکهایی که توسط طیف گستردهای از نسخههای macOS — در حال حاضر معمولاً از حداقل macOS 10.15 Catalina به بعد — پشتیبانی میشوند.
پرونده دانلودشده یک پرونده بسته نصب استاندارد macOS است (.pkg). اطلاعات یکپارچگی پرونده (جمعآزما، اندازه، امضای sigstore و غیره) برای هر پرونده در صفحه دانلود نسخه گنجانده شده است. بستههای نصب و محتویات آنها با گواهیهای Apple Developer ID متعلق به Python Software Foundation امضا و نوتاریسازی (notarized) شدهاند تا الزامات macOS Gatekeeper برآورده شوند.
برای نصب پیشفرض، روی پروندهی بستهی نصبکنندهی دانلودشده دوبار کلیک کنید. این کار باید برنامهی استاندارد Installer در macOS را اجرا کند و نخستین مرحله از چندین مرحلهی پنجرههای نصبکننده را نمایش دهد.
با کلیک روی دکمهی Continue، Read Me این نصبکننده نمایش داده میشود. Read Me در کنار سایر اطلاعات مهم، شرح میدهد که کدام نسخهی پایتون قرار است نصب شود و روی کدام نسخههای macOS پشتیبانی میشود. ممکن است برای خواندن کل پرونده، لازم باشد آن را اسکرول کنید. بهطور پیشفرض، این Read Me همچنین در /Applications/Python 3.14/ نصب خواهد شد و هر زمان که بخواهید قابل مطالعه خواهد بود.
با کلیک روی Continue، مجوز پایتون و سایر نرمافزارهای همراه نمایش داده میشود. سپس پیش از ادامه به گام بعدی، باید برای موافقت با شرایط مجوز روی Agree کلیک کنید. این پرونده مجوز نیز نصب خواهد شد و بعداً برای مطالعه در دسترس خواهد بود.
پس از پذیرفته شدن شرایط مجوز، گام بعدی نمایش Installation Type است. برای بیشتر کاربردها، مجموعه استاندارد عملیاتهای نصب مناسب است.
با فشردن دکمهی Customize میتوانید برخی از اجزای بستهی نصبکننده را حذف کرده یا انتخاب کنید. روی نام هر بسته کلیک کنید تا توضیحی دربارهی آنچه نصب میکند ببینید. برای اینکه پشتیبانی از قابلیت اختیاری نخآزاد را نیز نصب کنید، به نصب دودوییهای نخآزاد مراجعه کنید.
در هر دو حالت، کلیک روی Install فرایند نصب را با درخواست مجوز برای نصب نرمافزار جدید آغاز میکند. نام کاربری macOS با امتیاز Administrator لازم است، زیرا پایتون نصبشده برای همهی کاربران مک در دسترس خواهد بود.
پس از اتمام نصب، پنجرهی Summary نمایش داده میشود.
برای تکمیل نصب، روی نماد یا پروندهی Install Certificates.command در پنجرهی /Applications/Python 3.14/ دوبار کلیک کنید.
این کار یک پنجرهی پوستهی موقت Terminal باز میکند که با استفاده از پایتون جدید، گواهیهای ریشهی SSL را برای استفادهی خود دانلود و نصب میکند.
اگر Successfully installed certifi و update complete در پنجرهی پایانه ظاهر شد، نصب کامل شده است. این پنجرهی پایانه و پنجرهی نصاب را ببندید.
نصب پیشفرض شامل موارد زیر خواهد بود:
پوشهی
Python 3.14در پوشهیApplicationsشما. در این پوشه IDLE را مییابید؛ محیط توسعهای که بخش استانداردی از توزیعهای رسمی پایتون است؛ و Python Launcher را که دابلکلیک کردن اسکریپتهای پایتون از Finder مکاواس را مدیریت میکند.یک چارچوب
/Library/Frameworks/Python.frameworkکه شامل پرونده اجرایی پایتون و کتابخانهها است. نصبکننده این مکان را به مسیر پوستهی شما اضافه میکند. برای لغو نصب پایتون، میتوانید این سه مورد را حذف کنید. پیوندهای نمادین به پرونده اجرایی پایتون در/usr/local/bin/قرار میگیرند.
توجه
نسخههای اخیر macOS شامل فرمان python3 در /usr/bin/python3 هستند که به نسخهای معمولاً قدیمیتر و ناقص از پایتون پیوند دارد؛ نسخهای که توسط ابزارهای توسعه Apple، یعنی Xcode یا Command Line Tools for Xcode، فراهم شده و برای استفادهی آنهاست. هرگز نباید این نصب را تغییر دهید یا تلاش کنید آن را حذف کنید، زیرا این نصب تحت کنترل Apple است و نرمافزارهای ارائهشده توسط Apple یا نرمافزارهای شخص ثالث از آن استفاده میکنند. اگر تصمیم بگیرید نسخهی جدیدتری از پایتون را از python.org نصب کنید، دو نصب متفاوت اما کارآمد از پایتون روی رایانهی خود خواهید داشت که میتوانند در کنار هم وجود داشته باشند. گزینههای پیشفرض نصاب باید تضمین کنند که python3 آن بهجای python3 سیستم استفاده خواهد شد.
5.1.2. نحوه اجرای یک اسکریپت پایتون¶
دو راه برای فراخوانی مفسر پایتون وجود دارد. اگر با استفاده از پوستهی یونیکس در پنجرهی پایانه آشنا هستید، میتوانید python3.14 یا python3 را فراخوانی کنید که بهاختیار میتوانند با یک یا چند گزینهی خط فرمان همراه شوند (در خط فرمان و محیط شرح داده شدهاند). آموزش پایتون نیز بخش مفیدی دربارهی استفادهی تعاملی از پایتون در پوسته دارد.
همچنین میتوانید مفسر را از طریق یک محیط توسعه یکپارچه فراخوانی کنید. IDLE --- ویرایشگر و پوسته پایتون یک ویرایشگر و محیط مفسر پایه است که همراه با توزیع استاندارد پایتون ارائه میشود. IDLE شامل منوی راهنما (Help) است که به شما امکان میدهد به مستندات پایتون دسترسی داشته باشید. اگر کاملاً تازهکار در پایتون هستید، میتوانید مقدمهی آموزشی را در آن سند بخوانید.
ویرایشگرها و IDEهای بسیاری دیگر در دسترس هستند؛ برای اطلاعات بیشتر به ویرایشگرها و محیطهای توسعه یکپارچه مراجعه کنید.
برای اجرای یک پرونده اسکریپت پایتون از پنجره پایانه، میتوانید مفسر را با نام پرونده اسکریپت فراخوانی کنید:
python3.14myscript.py
برای اجرای اسکریپت خودتان از Finder، میتوانید یکی از این دو کار را انجام دهید:
آن را به Python Launcher بکشید.
از طریق پنجره اطلاعات Finder، Python Launcher را بهعنوان برنامه پیشفرض برای باز کردن اسکریپت خود (یا هر اسکریپت
.py) انتخاب کنید و روی آن دوبار کلیک کنید. Python Launcher تنظیمات گوناگونی برای کنترل نحوه راهاندازی اسکریپت شما دارد. کشیدن همراه با نگهداشتن کلید Option به شما امکان میدهد این تنظیمات را برای یک اجرا تغییر دهید، یا از منویPreferencesآن برای اعمال تغییرات بهصورت سراسری استفاده کنید.
آگاه باشید که اجرای مستقیم اسکریپت از Finder در macOS ممکن است نتایجی متفاوت نسبت به اجرای آن از طریق یک پنجره پایانه به دست دهد، زیرا اسکریپت در محیط معمول پوسته، از جمله هر تنظیمی از متغیرهای محیطی در پروفایلهای پوسته، اجرا نخواهد شد. و همانند هر اسکریپت یا برنامه دیگری، از چیزی که میخواهید اجرا کنید مطمئن باشید.
5.2. توزیعهای جایگزین¶
علاوه بر نصبکننده استاندارد python.org برای macOS، توزیعهای شخص ثالثی برای macOS وجود دارند که ممکن است قابلیتهای اضافی داشته باشند. برخی از توزیعهای محبوب و ویژگیهای کلیدی آنها:
- ActivePython
نصبکننده با سازگاری چندسکویی، مستندات
- Anaconda
ماژولهای علمی محبوب (مانند numpy، scipy و pandas) و مدیر بسته
conda.- Homebrew
مدیر بسته برای macOS که شامل نسخههای متعدد پایتون و بسیاری از بستههای شخص ثالث مبتنی بر پایتون (از جمله numpy، scipy و pandas) است.
- MacPorts
یک مدیر بستهی دیگر برای macOS که شامل چندین نسخه از پایتون و بسیاری از بستههای شخص ثالث مبتنی بر پایتون است. ممکن است شامل نسخههای پیشساختهی پایتون و بسیاری از بستهها برای نسخههای قدیمیتر macOS باشد.
توجه داشته باشید که توزیعها ممکن است شامل جدیدترین نسخههای پایتون یا کتابخانههای دیگر نباشند و توسط تیم اصلی پایتون نگهداری یا پشتیبانی نمیشوند.
5.3. نصب بستههای اضافی پایتون¶
برای اطلاعات بیشتر به Python Packaging User Guide مراجعه کنید.
5.4. برنامهنویسی رابط کاربری گرافیکی¶
چندین گزینه برای ساخت برنامههای رابط کاربری گرافیکی (GUI) روی مک با پایتون وجود دارد.
جعبهابزار رابط گرافیکی کاربر استاندارد پایتون، tkinter است که بر پایهی جعبهابزار چندسکویی Tk (https://www.tcl.tk) ساخته شده است. نسخهی بومی Tk برای macOS همراه با نصبکننده ارائه میشود.
PyObjC یک مقیدسازی پایتون برای چارچوب Objective-C/Cocoa اپل است. اطلاعات دربارهی PyObjC از طریق pyobjc در دسترس است.
تعدادی از جعبهابزارهای رابط گرافیکی کاربر (GUI) جایگزین برای macOS در دسترس هستند، از جمله:
PySide: پیوندهای رسمی پایتون به جعبهابزار گرافیکی Qt.
PyQt: پیوندهای جایگزین پایتون برای Qt.
Kivy: یک مجموعه ابزار رابط کاربری گرافیکی چندسکویی که از پلتفرمهای دسکتاپ و موبایل پشتیبانی میکند.
Toga: بخشی از پروژه BeeWare است؛ از برنامههای دسکتاپ، موبایل، وب و کنسول پشتیبانی میکند.
wxPython: مجموعه ابزار چندسکویی که از سیستمعاملهای دسکتاپ پشتیبانی میکند.
5.5. مباحث پیشرفته¶
5.5.1. نصب دودوییهای نخآزاد¶
اضافه شده در نسخهی 3.13.
بستهی نصبکنندهی پایتون برای macOS در python.org میتواند بهصورت اختیاری یک ساخت اضافی از پایتون 3.14 را نصب کند که از PEP 703، یعنی قابلیت نخبندی آزاد (اجرا با قفل مفسر سراسری غیرفعال)، پشتیبانی میکند. صفحهی انتشار در python.org را برای اطلاعات احتمالیِ بهروز بررسی کنید.
حالت نخآزاد کار میکند و بهبود آن همچنان ادامه دارد، اما در مقایسه با ساخت معمولی، در بارهای کاری تکنخی مقداری سربار اضافی وجود دارد. علاوه بر این، بستههای شخص ثالث، بهویژه بستههایی که دارای ماژول توسعهای هستند، ممکن است برای استفاده در ساخت نخآزاد آماده نباشند و قفل مفسر سراسری را دوباره فعال خواهند کرد. بنابراین، پشتیبانی از نخبندی آزاد بهصورت پیشفرض نصب نمیشود. این پشتیبانی بهعنوان یک گزینه نصب جداگانه بستهبندی شده است و مطابق توضیحات بالا، با کلیک روی دکمهی Customize در مرحلهی Installation Type نصبکننده در دسترس است.
اگر کادر کنار نام بستهی Free-threaded Python علامتگذاری شده باشد، یک PythonT.framework جداگانه نیز در کنار Python.framework معمولی در /Library/Frameworks نصب خواهد شد. این پیکربندی اجازه میدهد نسخهای از پایتون نخآزاد 3.14 در حین نصب یا آزمایش، با کمترین ریسک در کنار نسخهای از پایتون سنتی 3.14 (فقط با قفل مفسر سراسری) روی سیستم شما همزیستی کند. این چیدمان نصب ممکن است در نسخههای آینده تغییر کند.
هشدارها و محدودیتهای شناختهشده:
بستهی UNIX command-line tools که بهطور پیشفرض انتخاب شده است، پیوندهایی را در
/usr/local/binبرایpython3.14t(مفسر نخآزاد) وpython3.14t-config(ابزار پیکربندی که ممکن است برای سازندگان بسته مفید باشد) نصب میکند. از آنجا که/usr/local/binمعمولاً درPATHپوستهی شما قرار دارد، در بیشتر موارد برای استفاده ازpython3.14tنیازی به تغییر متغیرهای محیطیPATHشما نخواهد بود.برای این نسخه، بستهی بهروزرسان پروفایل پوسته (Shell profile updater) و
Update Shell Profile.commandدر/Applications/Python 3.14/از بستهی نخآزاد پشتیبانی نمیکنند.ساخت نخآزاد و ساخت سنتی مسیرهای جستوجوی جداگانه و پوشههای
site-packagesجداگانه دارند؛ بنابراین، بهطور پیشفرض، اگر به بستهای نیاز دارید که در هر دو ساخت در دسترس باشد، ممکن است لازم باشد در هر دو نصب شود. بستهی نخآزاد یک نمونهی جداگانه از pip را برای استفاده همراه باpython3.14tنصب میکند.برای نصب یک بسته با استفاده از pip بدون venv:
python3.14t -m pip install <package_name>
هنگام کار با چندین محیط پایتون، معمولاً ایمنترین و سادهترین کار این است که محیطهای مجازی ایجاد کنید و از آنها استفاده کنید. این کار میتواند از تداخلهای احتمالی در نام فرمانها و سردرگمی دربارهی اینکه کدام پایتون در حال استفاده است جلوگیری کند:
python3.14t -m venv <venv_name>
سپس activate.
برای اجرای نسخهی نخآزاد IDLE:
python3.14t -m idlelib
مفسرهای هر دو ساخت به همان متغیرهای محیطی PYTHON پاسخ میدهند که ممکن است نتایج غیرمنتظرهای در پی داشته باشد، برای مثال، اگر
PYTHONPATHرا در یک پروفایل پوسته تنظیم کرده باشید. در صورت نیاز، گزینههای خط فرمان مانند-Eبرای نادیده گرفتن این متغیرهای محیطی وجود دارند.ساخت نخآزاد به کتابخانههای اشتراکی شخص ثالث، مانند
OpenSSLوTk، که در چارچوب سنتی نصب شدهاند پیوند میشود. این بدان معناست که هر دو ساخت همچنین یک مجموعه واحد از گواهیهای اعتمادی را که توسط اسکریپت Install Certificates.command نصب شدهاند به اشتراک میگذارند؛ بنابراین تنها لازم است یک بار اجرا شود.اگر نمیتوانید مطمئن باشید که پیوند موجود در
/usr/local/binبهpython3.14tنخآزادpython.orgاشاره میکند (برای مثال، اگر بخواهید نسخهی خودتان را در آنجا نصب کنید یا توزیع دیگری این کار را انجام داده باشد)، میتوانید بهطور صریح متغیر محیطیPATHپوستهی خود را طوری تنظیم کنید که پوشهیbinچارچوبPythonTرا در بر بگیرد:export PATH="/Library/Frameworks/PythonT.framework/Versions/3.14/bin":"$PATH"
نصب چارچوب به روش سنتی بهطور پیشفرض کاری مشابه انجام میدهد، بهجز
Python.framework. آگاه باشید که اگر نامهای تکراری مانندpython3.14در هر دو وجود داشته باشند، داشتن هر دو پوشهیbinچارچوب درPATHمیتواند باعث سردرگمی شود؛ اینکه کدامیک در واقع استفاده میشود، به ترتیبی که درPATHظاهر میشوند بستگی دارد. دستورهایwhich python3.xیاwhich python3.xtمیتوانند نشان دهند که کدام مسیر در حال استفاده است. استفاده از محیطهای مجازی میتواند به پرهیز از چنین ابهامهایی کمک کند. گزینهی دیگر ممکن است ایجاد یک alias در پوسته برای مفسر دلخواه باشد، مانند:alias py3.14="/Library/Frameworks/Python.framework/Versions/3.14/bin/python3.14" alias py3.14t="/Library/Frameworks/PythonT.framework/Versions/3.14/bin/python3.14t"
5.5.2. نصب با استفاده از خط فرمان¶
اگر میخواهید برای نصب بستهی نصبکنندهی python.org از خودکارسازی استفاده کنید (بهجای استفاده از برنامهی گرافیکی آشنای Installer در macOS)، ابزار installer در خط فرمان macOS به شما امکان میدهد گزینههای غیرپیشفرض را نیز انتخاب کنید. اگر با installer آشنایی ندارید، ممکن است تا حدی گنگ باشد (برای اطلاعات بیشتر، man installer را ببینید). بهعنوان مثال، قطعهکد پوستهی زیر یکی از راههای انجام این کار را با استفاده از نسخهی 3.14.0b2 و انتخاب گزینهی مفسر نخآزاد نشان میدهد:
RELEASE="python-3.140b2-macos11.pkg"
# download installer pkg
curl -O https://www.python.org/ftp/python/3.14.0/${RELEASE}
# create installer choicechanges to customize the install:
# enable the PythonTFramework-3.14 package
# while accepting the other defaults (install all other packages)
cat > ./choicechanges.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>attributeSetting</key>
<integer>1</integer>
<key>choiceAttribute</key>
<string>selected</string>
<key>choiceIdentifier</key>
<string>org.python.Python.PythonTFramework-3.14</string>
</dict>
</array>
</plist>
EOF
sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges.plist -target /
سپس میتوانید با چیزی شبیه به موارد زیر آزمون کنید که هر دو ساخت نصبکننده اکنون در دسترس هستند:
$ # test that the free-threaded interpreter was installed if the Unix Command Tools package was enabled $ /usr/local/bin/python3.14t -VV Python 3.14.0b2 free-threading build (v3.14.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ # and the traditional interpreter $ /usr/local/bin/python3.14 -VV Python 3.14.0b2 (v3.14.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)] $ # test that they are also available without the prefix if /usr/local/bin is on $PATH $ python3.14t -VV Python 3.14.0b2 free-threading build (v3.14.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ python3.14 -VV Python 3.14.0b2 (v3.14.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]
توجه
نصبکنندههای فعلی python.org فقط در مکانهای ثابتی مانند /Library/Frameworks/، /Applications و /usr/local/bin نصب میکنند. شما نمیتوانید از گزینه -domain دستور installer برای نصب در مکانهای دیگر استفاده کنید.
5.5.3. توزیع برنامههای پایتون¶
طیفی از ابزارها برای تبدیل کد پایتون شما به یک برنامهی مستقل و قابل توزیع وجود دارد:
py2app: ساخت بستههای
.appmacOS از یک پروژهی پایتون را پشتیبانی میکند.Briefcase: بخشی از پروژه BeeWare؛ ابزار بستهبندی چندسکویی که از ایجاد بستههای
.appدر macOS و همچنین مدیریت امضا و تأیید رسمی (notarization) پشتیبانی میکند.PyInstaller: ابزار بستهبندی چندسکویی که یک پرونده یا پوشهی واحد را بهعنوان یک مصنوع توزیعپذیر (distributable artifact) ایجاد میکند.
5.5.4. انطباق با App Store¶
اپلیکیشنهایی که برای توزیع از طریق macOS App Store ارسال میشوند، باید فرایند بررسی اپلیکیشن اپل را با موفقیت پشت سر بگذارند. این فرایند شامل مجموعهای از قواعد اعتبارسنجی خودکار است که بسته اپلیکیشن ارسالی را از نظر وجود کد مشکلدار بررسی میکنند.
کتابخانه استاندارد پایتون شامل کدهایی است که میدانیم این قوانین خودکار را نقض میکنند. اگرچه این نقضها ظاهراً مثبت کاذب هستند، نمیتوان قوانین بررسی اپل را به چالش کشید. بنابراین، برای اینکه یک برنامه از بررسی App Store عبور کند، لازم است که کتابخانه استاندارد پایتون تغییر داده شود.
درخت منبع پایتون شامل یک پرونده وصله است که تمام کدهایی که مشخص است در فرایند بررسی App Store مشکل ایجاد میکنند را حذف خواهد کرد. این وصله بهطور خودکار زمانی اعمال میشود که سیپایتون با گزینهی --with-app-store-compliance پیکربندی شود.
این وصل معمولاً برای استفاده از سیپایتون روی مک لازم نیست؛ و اگر برنامهای را خارج از macOS App Store توزیع میکنید نیز لازم نیست. این وصل تنها زمانی لازم است که از macOS App Store بهعنوان کانال توزیع استفاده کنید.
5.6. منابع دیگر¶
صفحهی راهنمای python.org پیوندهایی به بسیاری از منابع مفید دارد. فهرست پستی Pythonmac-SIG منبع پشتیبانی دیگری است که بهطور خاص برای کاربران پایتون و توسعهدهندگان روی مک در نظر گرفته شده است.