5. استفاده از پایتون در macOS¶
هدف این سند، ارائهی مروری کلی بر رفتارهای اختصاصی macOS است که برای شروع کار با پایتون روی رایانههای مک باید از آنها آگاه باشید. پایتون روی مکی که macOS را اجرا میکند، بسیار شبیه به پایتون روی سایر پلتفرمهای برگرفته از یونیکس است، اما تفاوتهایی در نصب و برخی ویژگیها وجود دارد.
روشهای مختلفی برای دریافت و نصب پایتون در macOS وجود دارد. نسخههای از پیش ساختهشدهی جدیدترین نسخههای پایتون از تعدادی توزیعکننده در دسترس هستند. بخش عمدهی این سند به استفاده از پایتونهایی میپردازد که تیم انتشار سیپایتون آنها را برای دانلود از وبسایت python.org ارائه کرده است. برای برخی گزینههای دیگر، Alternative distributions را ببینید.
5.1. استفاده از پایتون برای مکاواس از python.org¶
5.1.1. مراحل نصب¶
For current Python versions
(other than those in security status), the release team produces a
Python for macOS installer package for each new release.
A list of available installers is provided on the
macOS downloads page.
We recommend using the most recent supported Python version where possible.
Current installers provide a
universal2 binary build
of Python which runs natively on all Macs (Apple Silicon and Intel) that are
supported by a wide range of macOS versions,
currently typically from at least macOS 10.15 Catalina on.
The downloaded file is a standard macOS installer package file (.pkg).
File integrity information (such as checksum, size, and Sigstore signature) for each file is included
on the release download page. Installer packages and their contents are signed and notarized
with Python Software Foundation Apple Developer ID certificates
to meet macOS Gatekeeper requirements.
For a default installation, double-click on the downloaded installer package file. This should launch the standard macOS Installer app and display the first of several installer steps.
با کلیک روی دکمهی Continue، Read Me این نصبکننده نمایش داده میشود. Read Me در کنار سایر اطلاعات مهم، شرح میدهد که کدام نسخهی پایتون قرار است نصب شود و روی کدام نسخههای macOS پشتیبانی میشود. ممکن است برای خواندن کل پرونده، لازم باشد آن را اسکرول کنید. بهطور پیشفرض، این Read Me همچنین در /Applications/Python 3.15/ نصب خواهد شد و هر زمان که بخواهید قابل مطالعه خواهد بود.
با کلیک روی Continue، مجوز پایتون و سایر نرمافزارهای همراه نمایش داده میشود. سپس پیش از ادامه به گام بعدی، باید برای موافقت با شرایط مجوز روی Agree کلیک کنید. این پرونده مجوز نیز نصب خواهد شد و بعداً برای مطالعه در دسترس خواهد بود.
پس از پذیرفته شدن شرایط مجوز، گام بعدی نمایش Installation Type است. برای بیشتر کاربردها، مجموعه استاندارد عملیاتهای نصب مناسب است.
By pressing the Customize button, you can choose to omit or select certain package components of the installer. Click on each package name to see a description of what it installs. For details of the optional free-threaded feature, which is installed by default, see Installing free-threaded binaries.
در هر دو حالت، کلیک روی Install فرایند نصب را با درخواست مجوز برای نصب نرمافزار جدید آغاز میکند. نام کاربری macOS با امتیاز Administrator لازم است، زیرا پایتون نصبشده برای همهی کاربران مک در دسترس خواهد بود.
پس از اتمام نصب، پنجرهی Summary نمایش داده میشود.
برای تکمیل نصب، روی نماد یا پروندهی Install Certificates.command در پنجرهی /Applications/Python 3.15/ دوبار کلیک کنید.
این کار یک پنجرهی پوستهی موقت Terminal باز میکند که با استفاده از پایتون جدید، گواهیهای ریشهی SSL را برای استفادهی خود دانلود و نصب میکند.
If Successfully installed certifi and update complete appear
in the terminal window, the installation is complete.
Close this terminal window and the installer window.
نصب پیشفرض شامل موارد زیر خواهد بود:
پوشهی
Python 3.15در پوشهی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.15 یا python3 را فراخوانی کنید که بهاختیار میتوانند با یک یا چند گزینهی خط فرمان همراه شوند (در خط فرمان و محیط شرح داده شدهاند). آموزش پایتون نیز بخش مفیدی دربارهی استفادهی تعاملی از پایتون در پوسته دارد.
همچنین میتوانید مفسر را از طریق یک محیط توسعه یکپارچه فراخوانی کنید. IDLE --- ویرایشگر و پوسته پایتون یک ویرایشگر و محیط مفسر پایه است که همراه با توزیع استاندارد پایتون ارائه میشود. IDLE شامل منوی راهنما (Help) است که به شما امکان میدهد به مستندات پایتون دسترسی داشته باشید. اگر کاملاً تازهکار در پایتون هستید، میتوانید مقدمهی آموزشی را در آن سند بخوانید.
ویرایشگرها و IDEهای بسیاری دیگر در دسترس هستند؛ برای اطلاعات بیشتر به ویرایشگرها و محیطهای توسعه یکپارچه مراجعه کنید.
برای اجرای یک پرونده اسکریپت پایتون از پنجره پایانه، میتوانید مفسر را با نام پرونده اسکریپت فراخوانی کنید:
python3.15myscript.py
برای اجرای اسکریپت خودتان از Finder، میتوانید یکی از این دو کار را انجام دهید:
آن را به Python Launcher بکشید.
از طریق پنجره اطلاعات Finder، Python Launcher را بهعنوان برنامه پیشفرض برای باز کردن اسکریپت خود (یا هر اسکریپت
.py) انتخاب کنید و روی آن دوبار کلیک کنید. Python Launcher تنظیمات گوناگونی برای کنترل نحوه راهاندازی اسکریپت شما دارد. کشیدن همراه با نگهداشتن کلید Option به شما امکان میدهد این تنظیمات را برای یک اجرا تغییر دهید، یا از منویPreferencesآن برای اعمال تغییرات بهصورت سراسری استفاده کنید.
آگاه باشید که اجرای مستقیم اسکریپت از Finder در macOS ممکن است نتایجی متفاوت نسبت به اجرای آن از طریق یک پنجره پایانه به دست دهد، زیرا اسکریپت در محیط معمول پوسته، از جمله هر تنظیمی از متغیرهای محیطی در پروفایلهای پوسته، اجرا نخواهد شد. و همانند هر اسکریپت یا برنامه دیگری، از چیزی که میخواهید اجرا کنید مطمئن باشید.
5.2. Alternative distributions¶
علاوه بر نصبکننده استاندارد python.org برای macOS، توزیعهای شخص ثالثی برای macOS وجود دارند که ممکن است قابلیتهای اضافی داشته باشند. برخی از توزیعهای محبوب و ویژگیهای کلیدی آنها:
- ActivePython
نصبکننده با سازگاری چندسکویی، مستندات
- Anaconda
ماژولهای علمی محبوب (مانند numpy، scipy و pandas) و مدیر بسته
conda.- Homebrew
مدیر بسته برای macOS که شامل نسخههای متعدد پایتون و بسیاری از بستههای شخص ثالث مبتنی بر پایتون (از جمله numpy، scipy و pandas) است.
- MacPorts
یک مدیر بستهی دیگر برای macOS که شامل چندین نسخه از پایتون و بسیاری از بستههای شخص ثالث مبتنی بر پایتون است. ممکن است شامل نسخههای پیشساختهی پایتون و بسیاری از بستهها برای نسخههای قدیمیتر macOS باشد.
توجه داشته باشید که توزیعها ممکن است شامل جدیدترین نسخههای پایتون یا کتابخانههای دیگر نباشند و توسط تیم اصلی پایتون نگهداری یا پشتیبانی نمیشوند.
5.3. Installing additional Python packages¶
برای اطلاعات بیشتر به Python Packaging User Guide مراجعه کنید.
5.4. GUI programming¶
چندین گزینه برای ساخت برنامههای رابط کاربری گرافیکی (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. Advanced topics¶
5.5.1. Installing free-threaded binaries¶
اضافه شده در نسخهی 3.13.
تغییر یافته در نسخهی 3.15: Free-threading support is now installed by default.
The python.org Python for macOS
installer package installs, by default, an additional build of
Python 3.15 that supports free threading
(running with the global interpreter lock disabled).
Check the release page on python.org for possible updated information.
The free-threaded mode is working and continues to be improved, but there is some additional overhead in single-threaded workloads compared to the regular build. Additionally, third-party packages, in particular ones with an extension module, may not be ready for use in a free-threaded build, and will re-enable the GIL. As of Python 3.15, free-threading support is installed by default. It is packaged as a separate install option, which can be deselected by clicking the Customize button on the Installation Type step of the installer as described above.
If the box next to the Free-threaded Python package name is checked
(as it is by default),
a separate PythonT.framework will also be installed
alongside the normal Python.framework in /Library/Frameworks.
This configuration allows a free-threaded Python 3.15 build to co-exist
on your system with a traditional (GIL only) Python 3.15 build with
minimal risk while installing or testing. This installation layout may
change in future releases.
هشدارها و محدودیتهای شناختهشده:
The UNIX command-line tools package, which is selected by default, will install links in
/usr/local/binforpython3.15t, the free-threaded interpreter, andpython3.15t-config, a configuration utility which may be useful for package builders. Since/usr/local/binis typically included in your shellPATH, in most cases no changes to yourPATHenvironment variable should be needed to usepython3.15t.برای این نسخه، بستهی بهروزرسان پروفایل پوسته (Shell profile updater) و
Update Shell Profile.commandدر/Applications/Python 3.15/از بستهی نخآزاد پشتیبانی نمیکنند.ساخت نخآزاد و ساخت سنتی مسیرهای جستوجوی جداگانه و پوشههای
site-packagesجداگانه دارند؛ بنابراین، بهطور پیشفرض، اگر به بستهای نیاز دارید که در هر دو ساخت در دسترس باشد، ممکن است لازم باشد در هر دو نصب شود. بستهی نخآزاد یک نمونهی جداگانه از pip را برای استفاده همراه باpython3.15tنصب میکند.برای نصب یک بسته با استفاده از pip بدون venv:
python3.15t -m pip install <package_name>
هنگام کار با چندین محیط پایتون، معمولاً ایمنترین و سادهترین کار این است که محیطهای مجازی ایجاد کنید و از آنها استفاده کنید. این کار میتواند از تداخلهای احتمالی در نام فرمانها و سردرگمی دربارهی اینکه کدام پایتون در حال استفاده است جلوگیری کند:
python3.15t -m venv <venv_name>
سپس activate.
برای اجرای نسخهی نخآزاد IDLE:
python3.15t -m idlelib
مفسرهای هر دو ساخت به همان متغیرهای محیطی PYTHON پاسخ میدهند که ممکن است نتایج غیرمنتظرهای در پی داشته باشد، برای مثال، اگر
PYTHONPATHرا در یک پروفایل پوسته تنظیم کرده باشید. در صورت نیاز، گزینههای خط فرمان مانند-Eبرای نادیده گرفتن این متغیرهای محیطی وجود دارند.ساخت نخآزاد به کتابخانههای اشتراکی شخص ثالث، مانند
OpenSSLوTk، که در چارچوب سنتی نصب شدهاند پیوند میشود. این بدان معناست که هر دو ساخت همچنین یک مجموعه واحد از گواهیهای اعتمادی را که توسط اسکریپت Install Certificates.command نصب شدهاند به اشتراک میگذارند؛ بنابراین تنها لازم است یک بار اجرا شود.اگر نمیتوانید مطمئن باشید که پیوند موجود در
/usr/local/binبهpython3.15tنخآزادpython.orgاشاره میکند (برای مثال، اگر بخواهید نسخهی خودتان را در آنجا نصب کنید یا توزیع دیگری این کار را انجام داده باشد)، میتوانید بهطور صریح متغیر محیطیPATHپوستهی خود را طوری تنظیم کنید که پوشهیbinچارچوبPythonTرا در بر بگیرد:export PATH="/Library/Frameworks/PythonT.framework/Versions/3.15/bin":"$PATH"
نصب چارچوب به روش سنتی بهطور پیشفرض کاری مشابه انجام میدهد، بهجز
Python.framework. آگاه باشید که اگر نامهای تکراری مانندpython3.15در هر دو وجود داشته باشند، داشتن هر دو پوشهیbinچارچوب درPATHمیتواند باعث سردرگمی شود؛ اینکه کدامیک در واقع استفاده میشود، به ترتیبی که درPATHظاهر میشوند بستگی دارد. دستورهایwhich python3.xیاwhich python3.xtمیتوانند نشان دهند که کدام مسیر در حال استفاده است. استفاده از محیطهای مجازی میتواند به پرهیز از چنین ابهامهایی کمک کند. گزینهی دیگر ممکن است ایجاد یک alias در پوسته برای مفسر دلخواه باشد، مانند:alias py3.15="/Library/Frameworks/Python.framework/Versions/3.15/bin/python3.15" alias py3.15t="/Library/Frameworks/PythonT.framework/Versions/3.15/bin/python3.15t"
5.5.2. نصب با استفاده از خط فرمان¶
If you want to use automation to install the python.org installer package
(rather than by using the familiar macOS Installer GUI app),
the macOS command line installer utility lets you select non-default
options, too. If you are not familiar with installer, it can be
somewhat cryptic (see man installer for more information).
As an example, the following shell snippet shows one way to do it,
using the 3.15.0b2 release and deselecting the free-threaded
interpreter option:
RELEASE="python-3.150b2-macos11.pkg"
# download installer pkg
curl -O https://www.python.org/ftp/python/3.15.0/${RELEASE}
# create installer choicechanges to customize the install:
# disable the PythonTFramework-3.15 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>0</integer>
<key>choiceAttribute</key>
<string>selected</string>
<key>choiceIdentifier</key>
<string>org.python.Python.PythonTFramework-3.15</string>
</dict>
</array>
</plist>
EOF
sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges.plist -target /
After a default install, you can test that both builds are available with something like:
$ # test that the free-threaded interpreter was installed if the Unix Command Tools package was enabled $ /usr/local/bin/python3.15t -VV Python 3.15.0b2 free-threading build (v3.15.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.15 -VV Python 3.15.0b2 (v3.15.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.15t -VV Python 3.15.0b2 free-threading build (v3.15.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ python3.15 -VV Python 3.15.0b2 (v3.15.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. Distributing Python applications¶
طیفی از ابزارها برای تبدیل کد پایتون شما به یک برنامهی مستقل و قابل توزیع وجود دارد:
py2app: ساخت بستههای
.appmacOS از یک پروژهی پایتون را پشتیبانی میکند.Briefcase: بخشی از پروژه BeeWare؛ ابزار بستهبندی چندسکویی که از ایجاد بستههای
.appدر macOS و همچنین مدیریت امضا و تأیید رسمی (notarization) پشتیبانی میکند.PyInstaller: ابزار بستهبندی چندسکویی که یک پرونده یا پوشهی واحد را بهعنوان یک مصنوع توزیعپذیر (distributable artifact) ایجاد میکند.
5.5.4. App Store compliance¶
اپلیکیشنهایی که برای توزیع از طریق macOS App Store ارسال میشوند، باید فرایند بررسی اپلیکیشن اپل را با موفقیت پشت سر بگذارند. این فرایند شامل مجموعهای از قواعد اعتبارسنجی خودکار است که بسته اپلیکیشن ارسالی را از نظر وجود کد مشکلدار بررسی میکنند.
کتابخانه استاندارد پایتون شامل کدهایی است که میدانیم این قوانین خودکار را نقض میکنند. اگرچه این نقضها ظاهراً مثبت کاذب هستند، نمیتوان قوانین بررسی اپل را به چالش کشید. بنابراین، برای اینکه یک برنامه از بررسی App Store عبور کند، لازم است که کتابخانه استاندارد پایتون تغییر داده شود.
درخت منبع پایتون شامل یک پرونده وصله است که تمام کدهایی که مشخص است در فرایند بررسی App Store مشکل ایجاد میکنند را حذف خواهد کرد. این وصله بهطور خودکار زمانی اعمال میشود که سیپایتون با گزینهی --with-app-store-compliance پیکربندی شود.
این وصل معمولاً برای استفاده از سیپایتون روی مک لازم نیست؛ و اگر برنامهای را خارج از macOS App Store توزیع میکنید نیز لازم نیست. این وصل تنها زمانی لازم است که از macOS App Store بهعنوان کانال توزیع استفاده کنید.
5.6. Other resources¶
صفحهی راهنمای python.org پیوندهایی به بسیاری از منابع مفید دارد. فهرست پستی Pythonmac-SIG منبع پشتیبانی دیگری است که بهطور خاص برای کاربران پایتون و توسعهدهندگان روی مک در نظر گرفته شده است.