我最近在OS X上安装了python 2.6.5 over 2.6.1。除非我尝试通过Applescript编辑器执行python脚本,否则一切正常。如果我执行以下行,我会得到版本2.6.1:
AppleScript的:
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"
可能有什么不对?这可以以某种方式轻松修复吗?
答案 0 :(得分:1)
我不建议覆盖系统安装的python
(或任何UNIX命令),因为某些系统应用程序可能依赖于安装的python
特定版本的怪癖。
如今,以完全不同的路径安装python
(或perl
或ruby
)的另一个不同副本是非常习惯的。
然后在bash的情况下在.profile
等中适当地设置路径,以便在您安装的命令行python
中进行选择。
但请注意,GUI应用程序从系统继承环境变量,不读取.profile
或其他内容。有一种方法可以更改GUI应用程序看到的PATH
环境变量(请参阅here),但我不建议这样做。
您在哪里安装了python
2.6.5?说它在
/usr/local/bin/python
然后在您的AppleScript代码中,您可以说
do shell script "/usr/local/bin/python -c ... ."
答案 1 :(得分:0)
Python 2.6.5安装程序修改了您的~/.bash_profile
文件,将Python 2.6.5的bin
目录放在$PATH
的开头,/usr/bin
之前,do shell script
操作系统的默认Python解释器所在。通过终端登录时会自动读取该配置文件,但使用python
时则不会。您需要指定所需的do shell script
可执行文件的完整路径(可能是最佳选项),或者您可以让脚本事先读取bash配置文件(但请注意sh
使用{{1 }},而不是bash
):
do shell script ". ${HOME}/.bash_profile; python -c 'import sys; print(sys.version)'"
答案 2 :(得分:0)
mac默认安装将python放在 / usr / bin 中,python安装程序将它放在带有 / usr / local / bin 中的sym链接的框架中。只需删除 / usr / bin 中的旧版本并创建新的sym链接
即可ln -s /Library/Frameworks/Python.framework/Versions/Current/bin/python /usr/bin/python