【问题标题】:Applescript uses wrong python version, how to change?Applescript使用错误的python版本,如何更改?
【发布时间】:2010-06-18 10:48:11
【问题描述】:

我最近在 OS X 上安装了 python 2.6.5 而不是 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"

可能出了什么问题?这可以通过某种方式轻松解决吗?

【问题讨论】:

  • 你到底是怎么安装的? python 2.6.1和2.6.5在哪里?
  • 我提到我安装了与 2.6.1 并行的 2.6.5,但 2.6.5 是主要的 python 解释器......大多数时候似乎。我使用了 OS X 安装程序磁盘映像,从未指定文件应该在哪里结束。 2.6.1 已预装。我之前在两台不同的 mac(都是雪豹)上做过同样的事情,没有问题,所以我有点困惑。

标签: python macos version applescript


【解决方案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 ... ." 

【讨论】:

  • 这行得通,谢谢!只希望它可以在不指定解释器的情况下工作,例如:do shell script "/Users/Me!/test.py"
  • 您可以将#! 行放在python 文件的开头。见en.wikipedia.org/wiki/Shebang_(Unix)。你需要在开头写上#!/usr/local/bin/python 之类的东西。是的,你需要把完整的路径放在那里。
  • 我已经指定了正确的 shebang :( 只有当 applescript 本身选择 python 解释器时才会出现问题。
  • 这很奇怪。如果你有正确的shebang,并且文件有可执行位,那么shell脚本“/path/to/script.py”应该可以正常工作,调用shebang中指定的解释器。
【解决方案2】:

Python 2.6.5 安装程序会修改您的 ~/.bash_profile 文件以将 Python 2.6.5 的 bin 目录放在您的 $PATH 的开头,位于操作系统默认 Python 解释器所在的 /usr/bin 之前。当您通过终端登录时会自动读取该配置文件,但在使用 do shell script 时不会。您要么需要指定所需的 python 可执行文件的完整路径(可能是最好的选择),要么可以让脚本预先读取 bash 配置文件(尽管请注意 do shell script 使用 sh,而不是 @987654329 @):

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

【讨论】:

  • 您的两种解决方案都有效,我会选择其中一种。谢谢!
【解决方案3】:

mac 默认安装将 python 放置在 /usr/bin 中,python 安装程序将其放置在带有符号链接的框架中 /usr/local/bin。只需删除 /usr/bin 中的旧版本并创建新的符号链接

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

【讨论】:

    猜你喜欢
    • 2016-08-13
    • 2017-01-02
    • 2011-01-10
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多