@
ipwx 在 macOS 上,如果不在 Docker 、虚拟机里做 Python 开发的话,会面临各种版本的兼容性问题。
我有印象的是 3.7.4 后面的几个小版本在 macOS 10.15 上因为新加的签名校验导致用 pyinstaller 打包出来的程序不能直接启动,而 3.7.4 和更早的版本可以。当时做的是一个图形界面的服务端维护工具,只提供给使用 macOS 的客户内部使用。因为这个东西比较麻烦,就直接选用 3.7.4 版本了。
在 big sur 上,运行打包好的 Python 3.6 程序都没什么问题,不过开发工具只有 3.9 版本才能正常兼容……所以,之前提到的项目还要在 macOS 10.14 中打包,经过测试可以在 macOS 10.14 ~ 11.0 中运行。10.13 则用 10.11 来打包,更早的版本用户量太少了,所以不考虑了。
公司的服务器用的 CentOS 版本有点老,上面的 Python 还是 3.6 版本的,服务器上用的是这个版本。
上面提到的那个运行在 macOS 上的图形界面工具其实是在 Windows 中开发的,因为 Windows 下可以同时安装 Python 3.5 ~ Python 3.9 所有版本,代码和打包的脚本写好之后再通过 CI,于不同版本的 macOS 中打包。并且同时还得打包一个 Windows 版本……
当然,因为 PyCharm 在很久以前就支持 FTP 自动上传、远程调试等功能,如今还有免费的 VSCode 可以用。因此,在宿主系统下写代码,在虚拟机、Docker 、WSL 里运行调试也没有什么不便的地方,不太需要担心当前平台无法使用某个库的问题。在 WSL 2 中,甚至连 CUDA 都可以使用,不过性能差了点。
至于为什么不直接在 macOS big sur 上用 Python 3.9 for macOS 版本做开发,然后不使用新版本的语法特性来兼容老版本 Python,然后通过 CI 给各种环境构建……
因为第三方库的问题,高版本 Python 能用的库还不够全,而且已经兼容的第三方库也是最新的版本,与老版本的 API 存在一些差异。而写出来的代码还要考虑尽可能在多个目标环境上复用的问题。
如果想问个人项目没有 macOS 怎么才能给苹果平台做适配,答案是使用 appveyor 的 CI 服务(免费)。