Applescript使用错误的Python版本,如何更改?

1 投票
3 回答
1287 浏览
提问于 2025-04-16 00:08

我最近在OS X上把Python 2.6.1升级到了2.6.5。除了在苹果脚本编辑器中执行Python脚本时出现问题,其他一切都正常。如果我在苹果脚本中执行以下代码,我得到的是版本2.6.1:

苹果脚本:

do shell script "python -c \"from sys import version; print version\""

但是如果我在OS X的终端中执行类似的代码,我得到的是版本2.6.5:

OS X终端:

python -c "from sys import version; print version"

这可能是什么问题呢?有没有简单的方法可以解决?

3 个回答

0

在Mac电脑上,默认安装的Python会放在 /usr/bin 这个地方。而如果你用Python的安装程序安装,它会把Python放在一个框架里,同时在 /usr/local/bin 里创建一些快捷方式。你只需要把旧版本的Python从 /usr/bin 删除掉,然后再创建新的快捷方式就可以了。

ln -s /Library/Frameworks/Python.framework/Versions/Current/bin/python /usr/bin/python
1

我不建议覆盖系统自带的 python(或者其他 UNIX 命令),因为某些系统应用可能依赖于特定版本的 python 的一些特性。

现在很常见的做法是安装一个独立的 python 版本,放在一个完全不同的路径下。然后你可以在 .profile 等文件中设置好路径,这样在命令行中输入 python 时,就会选择你安装的那个版本。

不过要注意,图形界面的应用程序会从系统中继承环境变量,而不会读取 .profile 或其他文件。虽然有办法可以改变图形应用程序看到的 PATH 环境变量(可以查看 这里),但我不推荐这样做。

你把 python 2.6.5 安装在哪里了?假设它在

/usr/local/bin/python

那么在你的 AppleScript 代码中,你可以直接写

do shell script "/usr/local/bin/python  -c ... ." 
0

Python 2.6.5的安装程序会修改你的 ~/.bash_profile 文件,把 Python 2.6.5 的 bin 目录放在你的 $PATH 变量的最前面,这样它就会在系统默认的 Python 解释器 /usr/bin 之前被找到。这个配置文件在你通过终端登录时会自动读取,但在使用 do shell script 时不会。你要么需要指定你想要的 python 可执行文件的完整路径(这可能是最好的选择),要么可以让你的脚本提前读取 bash 配置文件(不过要注意, do shell script 使用的是 sh 而不是 bash):

do shell script ". ${HOME}/.bash_profile; python -c 'import sys; print(sys.version)'"

撰写回答