2010-06-18 74 views
1

我最近在OS X的2.6.1上安装了python 2.6.5。除了当我尝试通过Applescript编辑器执行python脚本时,一切正常。如果我执行下面的行我得到2.6.1版本:AppleScript使用错误的python版本,如何更改?

的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

如何你究竟覆盖安装? python 2.6.1和2.6.5在哪里? – Mark 2010-06-18 11:27:31

+0

I ment我安装了2.6.5并行于2.6.1,但2.6.5是主要的Python解释器......大部分时间看起来似乎。我使用OS X安装程序磁盘映像,从未指定文件应该放在哪里。 2.6.1已预装。我之前在两个不同的mac上做了同样的事情(都是雪豹),所以我有点困惑。 – bennedich 2010-06-18 22:14:46

回答

0

Python的2.6.5安装程序会修改你的~/.bash_profile文件放的Python 2.6.5的bin目录在你$PATH开始,在/usr/bin之前,这是操作系统默认的Python解释器所在的位置。当您通过终端登录时会自动读取该配置文件,但在使用do shell script时不会自动读取该配置文件。要么你需要指定到你想要的python可执行文件(可能是最好的选择)的完整路径,或者你可以有你的脚本读取bash的轮廓事先(虽然知道do shell script使用sh,不bash):

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

您的解决方案都能正常工作,我会解决其中的一个。谢谢! – bennedich 2010-06-19 13:11:35

1

我不会推荐覆盖系统安装的python(或任何UNIX命令),因为某些系统应用程序可能取决于安装的python特定版本的特殊情况。

现在很习惯在完全不同的路径上安装python(或perlruby)的另一个不同副本。 然后,在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 ... ." 
+0

这个作品,谢谢!只希望它能在没有指定解释器的情况下工作,例如:do shell脚本“/Users/Me!/test.py” – bennedich 2010-06-18 22:36:23

+0

您可以在'python'文件的开头放置'#!'行。见http://en.wikipedia.org/wiki/Shebang_(Unix)。你需要在头部写一些'#!/ usr/local/bin/python'。是的,你需要把完整的道路放在那里。 – Yuji 2010-06-19 02:59:58

+0

我已经指定了正确的shebang :(只有当applescript本身选择python解释器时才会出现这个问题。 – bennedich 2010-06-19 13:02:53

0

mac默认安装将python放置在/usr/bin中,python安装程序将其放置在框架中,其链接位置为/usr/local/bin。就在的/ usr/bin中删除旧版本,并创造新的符号链接

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