ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

macOS 装 Python 不踩坑:从 CPython 官方安装器到 free-threaded 构建的完整流程

macOS 装 Python 不踩坑:从 CPython 官方安装器到 free-threaded 构建的完整流程 macOS 装 Python 不踩坑从 CPython 官方安装器到 free-threaded 构建的完整流程【免费下载链接】cpythonThe Python programming language项目地址: https://gitcode.com/GitHub_Trending/cp/cpython想在 macOS 上安装 Python最稳的路径是 python.org 提供的 CPython 官方安装器.pkguniversal2 二进制通吃 Apple Silicon 与 Intel 机器3.15 起还默认附带一个 free-threaded无 GIL构建。仓库 main 分支当前是 3.16.0a0 开发版下文命令示例统一用 3.15 系列版本。这篇文章从下载、安装、日常跑脚本到 venv、自动化安装、App Store 合规按装、跑、选、扩、画、新、自、发的顺序过一遍。安装包长什么样universal2 与签名公证一个 .pkg 覆盖两种芯片CPython 发布团队会为每个仍在维护的版本security安全维护状态的除外产出 Python for macOS 安装器官方建议尽量用最新的受支持版本。当前安装器提供 universal2 二进制同一个 .pkg 原生运行在 arm64 与 x86_64 两种 Mac 上一般兼容 macOS 10.15 Catalina 及以上。发布页会列出每个文件的校验和、大小与 Sigstore 签名安装包及其内容用 PSF 的 Apple Developer ID 证书签名并通过公证notarizedGatekeeper 不会拦你。构建脚本侧的印证构建逻辑在Mac/BuildScript/build-installer.py先在树外构建完整的 framework 版 Python再用现代pkgbuild/productbuild组装成 .pkg最后签名加公证。README 给的示例命令如下OpenSSL、Tcl/Tk、SQLite 等第三方库是随包构建的readline、zlib、bz2 则用系统版本。/path/to/bootstrap/python3 build-installer.py \ --universal-archsuniversal2 \ --dep-target10.9双击 .pkg 后的安装流程逐屏过一遍前四个界面介绍、自述、许可证、安装类型默认安装只需要双击 .pkg系统 Installer 会依次带过几个界面。介绍页点 Continue 继续Read Me 页记录要安装的 Python 版本与受支持的 macOS 版本这份自述默认会装进/Applications/Python X.Y/供日后查阅许可证页必须点 Agree 才能进下一步安装类型页保持标准组合即可。点 Customize 可以勾选或取消单个组件点包名能看它的说明其中一个默认勾选的就是 Free-threaded Python后文细讲。点 Install 之后管理员密码与证书收尾点 Install 会要求输入具备 Administrator 权限的账户密码因为装好的 Python 对这台 Mac 的所有用户可用。完成后弹出 Summary 窗口。此时还没完去/Applications/Python X.Y/窗口双击Install Certificates.command会弹出一个临时终端用新装的 Python 下载并安装 SSL 根证书。终端出现Successfully installed certifi和update complete才算彻底装完关掉终端和安装器窗口即可。装完之后系统里多了什么一次默认安装留下三样东西/Applications下的Python X.Y文件夹内含 IDLE 和负责双击运行脚本的 Python Launcher框架目录/Library/Frameworks/Python.framework解释器与库所在安装器会把它加进 shell PATH以及/usr/local/bin/下的一批可执行文件符号链接。卸载就是把这三样删掉。新一点的 macOS 自带/usr/bin/python3那是 Apple 开发工具Xcode 或 Command Line Tools配套的、通常较旧且不完整的版本由 Apple 控制第三方软件也依赖它永远不要动它。装完官方安装器后两套 Python 可以共存默认选项保证终端里的python3优先解析到你新装的这份。跑起来终端、IDLE 与 Finder 三种方式终端与 IDE终端窗口里直接调python3或带小版本号的pythonX.Y命令行选项全集见Doc/using/cmdline.rst。跑脚本就是python3 myscript.pyIDLE 是标准发行版自带的编辑器加解释器Help 菜单能直接翻 Python 文档适合第一次接触。想要更多选择Doc/using/editors.rst整理了一批编辑器与 IDE。从 Finder 双击 .py 的环境变量差异Finder 里跑 .py 有两条路把文件拖到 Python Launcher 图标上或在 Finder 的显示简介窗口里把 Python Launcher 设为 .py 文件的默认打开应用再双击。这里容易踩坑Finder 启动不在 shell 环境里shell profile 里设置的环境变量不会加载结果可能和终端里跑不一样。Python Launcher 支持按住 Option 拖放来临时改单次启动方式也可以通过它的 Preferences 菜单全局调整。运行任何来路不明的脚本之前先确认自己到底在跑什么。官方安装器之外第三方发行渠道的定位Homebrew 是 macOS 的包管理器brew install python能拿到对应版本的 Python附带大量第三方包MacPorts 同类还能为较旧的 macOS 提供预编译版本。Anaconda 面向科学计算场景内置 numpy、scipy、pandas 等热门模块和 conda 包管理器ActivePython 提供多平台兼容的安装器与配套文档。这些渠道的共同短板不一定有最新版 Python 或其他库且都不由 CPython 核心团队维护支持。能靠官方安装器满足需求时直接用官方安装器。装第三方包pip 与 venv官方 macOS 安装器自带 pip标准用法python3 -m pip install package_name更稳妥的做法是每个项目建一个 venv隔离环境、避免污染全局 site-packagespython3 -m venv myenv source myenv/bin/activate pip install package_name打包层面的完整实践看 Python Packaging User Guide。GUI 方案速览七个工具一句话说清tkinter 是标准库工具包基于跨平台 Tk官方安装器随附了 macOS 原生版 Tk零安装可用。PyObjC 是到 Apple Objective-C/Cocoa 框架的绑定能用近乎完整的 Cocoa API最贴近 macOS 原生。PySide 是 Qt 的官方 Python 绑定PyQt 是另一套主流的 Qt 绑定。Kivy 跨桌面与移动平台Toga 属于 BeeWare 项目覆盖桌面、移动、Web 和命令行wxPython 是面向桌面系统的跨平台工具包。free-threaded 构建python3.15t 与 python3.15 怎么共存是什么、为什么 3.15 起默认装free-threading 指以禁用 GIL全局解释器锁的方式运行3.13 加入支持3.15 起官方 macOS 安装器默认安装这个构建。代价是单线程负载相比常规构建有额外开销第三方包里带 C 扩展模块的若尚未适配会重新启用 GIL退回传统行为。这个模式可用且持续改进中但选型时要把这两点算进去。PythonT.framework 的文件布局free-threaded 被封装成独立安装项保持勾选默认状态时安装器会在/Library/Frameworks里额外装一个PythonT.framework与常规Python.framework并存。这个布局让传统仅 GIL与 free-threaded 构建在同机共存且基本零冲突方便安装和 A/B 对比官方也注明布局未来版本可能调整。对应解释器名字带t后缀3.15 就是python3.15t配套配置工具python3.15t-config对打包构建者有用。默认选中的 UNIX command-line tools 包会把这两个链接装进/usr/local/bin该目录通常在 PATH 里多数情况不用改任何环境变量。独立 site-packages、独立 pip推荐直接上 venv两套构建的搜索路径和 site-packages 目录彼此独立一个包要在两边都能用就得各装一遍。free-threaded 构建自带独立 pip 实例python3.15t -m pip install package_name python3.15t -m venv myenv_t python3.15t -m idlelib同时维护多个 Python 环境时venv 是最不容易出错的方式能消掉命令名冲突和当前到底哪个 Python 在工作的困惑python3.15t -m venv建好后按常规 activate。PATH、环境变量与共享的部分几处共享或易混淆的地方值得记一下。两套解释器响应同一组PYTHON*环境变量比如 shell profile 里设了PYTHONPATH会同时影响两边必要时用-E这类选项忽略环境变量。free-threaded 构建链接传统框架里的第三方共享库OpenSSL、Tk 等信任证书也共用一套所以Install Certificates.command只需跑一次。Shell profile updater 包和/Applications/Python X.Y/下的Update Shell Profile.command目前不支持 free-threaded 包。如果/usr/local/bin里的链接不指向官方 free-threaded 解释器比如被自建版本或其他发行版占用可以显式把 PythonT 的 bin 目录放进 PATHexport PATH/Library/Frameworks/PythonT.framework/Versions/3.15/bin:$PATH 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两个框架的 bin 目录同时出现在 PATH 里且存在同名命令时实际用哪个取决于先后顺序which python3.15/which python3.15t可以看真实解析结果。用 installer 命令自动化安装并验证两套构建安装流程要脚本化CI、批量配机器可以用系统命令行工具installer替代图形化 Installer它同样支持非默认选项。下面示例用 3.15.0b2 的 release 包关掉 free-threaded 选项、其余组件保持默认RELEASEpython-3.15.0b2-macos11.pkg curl -O https://www.python.org/ftp/python/3.15.0/${RELEASE} cat ./choicechanges.plist EOF ?xml version1.0 encodingUTF-8? plist version1.0 array dict keyattributeSetting/key integer0/integer keychoiceAttribute/key stringselected/string keychoiceIdentifier/key stringorg.python.Python.PythonTFramework-3.15/string /dict /array /plist EOF sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges.plist -target /plist 的作用只有一个把org.python.Python.PythonTFramework-3.15安装项的selected属性置 0不装 PythonT其余走默认。限制提醒python.org 安装器只装到固定位置/Library/Frameworks/、/Applications、/usr/local/bin-domain装到别处行不通。验证两套构建都在位-VV看一眼即可/usr/local/bin/python3.15t -VV # Python 3.15.0b2 free-threading build (...) /usr/local/bin/python3.15 -VV # Python 3.15.0b2 (...)输出带free-threading build字样的是无 GIL 构建另一条是传统构建/usr/local/bin在 PATH 里时可以直接去掉路径前缀调用。分发应用打包工具与 App Store 合规三个打包工具各管什么py2app 专门把 Python 项目打成 macOS .app bundleBriefcase 是 BeeWare 的跨平台打包工具macOS 上出 .app 并顺带管签名与公证PyInstaller 跨平台产出单文件或单目录的分发产物。App Store 审核为什么要求改标准库走 macOS App Store 分发的应用必须过 Apple 审核其中一组自动化校验规则会扫描应用 bundle 里的问题代码。Python 标准库里有少量已知会触发这些规则的代码看着像误报但 Apple 的规则不可申诉想让应用过审就必须改标准库。CPython 源码树里备好了Mac/Resources/app-store-compliance.patch移除所有已知会引发审核问题的代码——比如把Lib/urllib/parse.pyURL scheme 白名单里的itms-services删掉对应测试用例同步调整。配置构建时传--with-app-store-compliance会自动应用该补丁默认值 yes 时在 Darwin/iOS 系统上自动指向这个补丁文件iOS 与 macOS 共用其他系统直接报错提示没有默认补丁也可以传--with-app-store-compliancePATCH-FILE指定自定义补丁。补丁的适用面很窄平时在 Mac 上用 CPython 不需要它App Store 之外分发也不需要只有以 macOS App Store 为分发渠道时才必须用。延伸资源Doc/using/目录里除了这篇 macOS 文档还有 Unix、Windows、Android、iOS 的平行指南可以对照着读。python.org 官网 Help 页面汇总了不少实用链接Pythonmac-SIG 邮件列表是 Mac 上 Python 用户与开发者的专门社区卡住时先在那边问一轮。【免费下载链接】cpythonThe Python programming language项目地址: https://gitcode.com/GitHub_Trending/cp/cpython创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表