Applescript使用错误的Python版本,如何更改?
我最近在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 个回答
在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
我不建议覆盖系统自带的 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 ... ."
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)'"